1

重複の可能性:
各オブジェクトがArrayList <Object>にあるタイプを確認するにはどうすればよいですか?
Javaでジェネリックのタイプを知る

Javaのリフレクションを使用してTypeFooを取得するにはどうすればよいですか?ArrayList

ArrayList<Foo> myList = new ArrayList<Foo>();
4

1 に答える 1

9

このタイプは値から取得することはできませんが、フィールド情報から取得することはできます。

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>();
于 2012-11-19T16:00:28.037 に答える