2016-06-24

2016-06-24 09:54 pm

Узнать тип, которым параметризован генерик

В любом учебнике написано, что в рантайме тип, которым параметризован генерик, не сохраняется. Однако:
ArrayList s = new ArrayList(){};
Type t = s.getClass().getGenericSuperclass();
Type param =((ParameterizedType) t).getActualTypeArguments()[0];
System.out.println(param);
System.out.println(param==String.class);


Дает результат:
class java.lang.String
true

нашел в коде netty.

То есть, если у нас есть class Foo extends Bar<Baz>{}, то Baz все таки сохраняется в рантайме.