Отражение 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>();