Отражение ArrayList

Возможный дубликат:
Как узнать, какой тип у каждого объекта в ArrayList?
Знание типа общего в Java

Как я могу получить тип Foo от моего ArrayList используя отражение в Java?

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

1 ответ

Решение

Вы не можете получить этот тип из значения, но вы можете получить его из информации поля.

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>();
Другие вопросы по тегам