VO
@Data
public class Data {
private List<AA> sysDataDictList;
private List<BB> sysDataDictDtlList;
}
获取AA、BB
- getDeclaredFields只会获取本类的字段,而getFields只会获取本类和父类中公有的字段
- getFields只能获取public的字段,包括父类的,getDeclaredFields只能获取自己声明的各种字段,包括public,protected,private。
- 要获取父类里的方法,通过 getSuperclass 获取父类的类型,然后再从父类的类型里 getDeclaredFields
Field[] fields = Data.class.getDeclaredFields();
for (Field field : fields) {
String fieldType = getFieldsType(field);
}
private String getFieldsType(Field field) {
field.setAccessible(true);
Class<?> curFieldType = field.getType();
if (curFieldType.equals(List.class)) {
Type genericType = field.getGenericType();
if (genericType instanceof ParameterizedType) {
ParameterizedType pt = (ParameterizedType) genericType;
Class<?> actualType = (Class<?>) pt.getActualTypeArguments()[0];
return actualType.getSimpleName();
}
}
return field.getName();
}
接口图
hutool反射工具https://hutool.cn/docs/#/