遇到一个问题,需要获取某个类里面的list内的泛型对象,几经查找研究,总结代码如下
Class aClass = A.class();//获取类对象
Field fields = aClass.getDeclareFields();//获取字段信息
for(Field f : fields){
Class<?> fieldClazz = f.getType();//获取f的类
if(fieldClazz.isPrimitive()) continue; //判断是否为基本类型
if(fieldClazz.isAssignableFrom(List.class)){//判断fc是否和List相同或者其父类
Type fc = f.getGenericType(); //如果是List类型,得到其Generic的类型
if(fc instanceof ParameterizedType){
ParameterizedType pt = (ParameterizedType) fc;
//得到泛型里的class类型对象。
Class genericClazz = (Class)pt.getActualTypeArguments()[0];
}
}
}
获取到了里面的泛型类对象。