Java 使用反射对 List<T>
类型的属性赋值
判断是否是 List
类型:
java
if (field.getType().isAssignableFrom(List.class))
生成实例并赋值:
java
Type fc = field.getGenericType(); // 得到其 Generic 的类型
if (fc == null) continue;
if (fc instanceof ParameterizedType) // 如果是泛型参数的类型
{
ParameterizedType pt = (ParameterizedType) fc;
Class genericClazz = (Class) pt.getActualTypeArguments()[0]; // 得到泛型里的 class 类型对象。
if (genericClazz.isPrimitive() || genericClazz.getName().startsWith("java.lang")) { // 是基本类型或 java.lang 包中的类型
// do something
} else { // 自定义的类型
// 使用 genericClazz.newInstance() 创建对应的实例
// 使用 genericClazz.getDeclaredFields() 获取所有 Field,循环 Field 赋值
}
}