3

ベース Java リフレクションに代わるより型安全な代替手段を構築しようとしていますが、ちょっとした問題に直面しました。メソッドとオブジェクトをバインドするクラスBoundMethod<T>を作成したので、メソッドを呼び出して (型 T の) 結果をタイプセーフな方法で返すことができます。これには、クラスをコンストラクターに渡し、そのクラスを使用して戻り値 (つまりreturn returnType.cast(method.invoke(object, params))) をキャストすることが含まれます。

私が抱えている問題は、メソッドオブジェクトの結果に基づいてこれらのオブジェクトを自動的に作成しgetReturnType()、戻り値の型がプリミティブオブジェクトである場合、プリミティブ型に動的にキャストできないため、ClassCastException が発生することです。適切な参照型に置き換える方法が必要ですが、これを行う簡単な方法が見つかりません。

ビルド済みのソリューションはありますか、それとも自分でビルドする必要がありますか?

4

1 に答える 1

3

returnTypeプリミティブかどうかを確認します。

returnType.isPrimitive();

そうであれば、そのラッパー クラスを取得します。

残念ながら、これにより値の自動ボックス化が可能になりますが、それは単純にジェネリックとプリミティブを混在させたときに起こることです。

于 2012-09-16T09:25:49.880 に答える