3

GenericsJava機能を使用して、共通の機能を実装したいと考えています。java.lang.reflect.Typeしかし、自己定義クラス オブジェクトのオブジェクトを取得する方法がわかりません。ProcessedResult<T>以下は、特定のクラス名から Type を取得し、それを replace に渡したい場合ですT

String className = getClassName();
Class clazz = Class.forName(className);
Type type = null;
ProcessedResult<T> result = new ProcessedResult<T>();

を使用しようとしましProductModel.class.getGenericSuperclass()たが、その名前のとおり、そのスーパー クラスの Type のみを返します。

誰か助けてくれませんか?ありがとう。

4

2 に答える 2

5

ジェネリック型のコンパイル時の置換として実行時決定型を指定することはできません。

あなたの型T、実際にはコンパイル時にのみ適用されます。したがって、実行時に実際の型を取得するまでに、情報やチェックはすべて完了してしまいます。

有用な作業をProcessedResult行うには、代わりにClass<T>orTypeオブジェクトを使用する必要があります。

于 2013-01-10T08:39:02.720 に答える
3

java.lang.reflect.Typeジェネリック インターフェイスではありません。

また、使用をご希望の場合Typeは、

instance.getClass()orを使用ClassName.classして、インターフェースを返しClass<?>Class実装することができTypeます。だからうまくいくはずです。

使用するProcessedResult<Type>か、ProcessedResult<Class<?>>

于 2013-01-10T08:13:57.563 に答える