public class User {
public List<User> list= new ArrayList<User>();
public String s = "user";
/**
* 此方法获取泛型字段的具体泛型类型
* 想获取方法的泛型参数类型,可以通过Method的getGenericParameterTypes或者获取返回值的泛型具体类型getGenericRuturnType
* 想获取父类的泛型类型用Class的getGenericSuperClass
* .....
*
* 注意:Type为Class的父类接口
*/
@Test
public void testGeneric() throws Exception{
Field field = User.class.getField("list");
Type type = field.getGenericType();
if(type instanceof ParameterizedType){
ParameterizedType pt = (ParameterizedType)type;
Class userClazz = (Class) pt.getActualTypeArguments()[0];
System.out.println(userClazz.getField("s").get(userClazz.newInstance()));
}
}
}