重複の可能性:
各オブジェクトがArrayList <Object>にあるタイプを確認するにはどうすればよいですか?
Javaでジェネリックのタイプを知る
Javaのリフレクションを使用してTypeFoo
を取得するにはどうすればよいですか?ArrayList
ArrayList<Foo> myList = new ArrayList<Foo>();
重複の可能性:
各オブジェクトがArrayList <Object>にあるタイプを確認するにはどうすればよいですか?
Javaでジェネリックのタイプを知る
Javaのリフレクションを使用してTypeFoo
を取得するにはどうすればよいですか?ArrayList
ArrayList<Foo> myList = new ArrayList<Foo>();
このタイプは値から取得することはできませんが、フィールド情報から取得することはできます。
public class Main {
interface Foo { }
class A {
List<Foo> myList = new ArrayList<Foo>();
}
public static void main(String... args) throws NoSuchFieldException {
ParameterizedType myListType = ((ParameterizedType)
A.class.getDeclaredField("myList").getGenericType());
System.out.println(myListType.getActualTypeArguments()[0]);
}
}
プリント
interface Main$Foo
フィールド、メソッド引数、リターンタイプ、および拡張クラス/インターフェイスは検査できますが、ローカル変数または値は検査できません。
これらは同じ結果を生成します。
List<Foo> myList = new ArrayList();
List<Foo> myList = (List) new ArrayList<String>();
のジェネリック型を取得できません
List myList = new ArrayList<Foo>();