1、getFields和getDeclareFields的区别
Field[] fields = object.getClasss().getFields();
Field[] fields1 = object.getClasss().getDeclareFields();
Field[] fields2 = model.getClass().getSuperclass().getDeclaredFields();
getFields返回一个Field类型数组,其中包含当前类的public字段,如果此类继承于某个父类,同时包括父类的public字段。其它的proteced和private字段,无论是属于当前类还是父类都不被此方法获取。
getDeclareFields返回一个Field类型数组,结果包含当前类的所有字段,private、protected、public或者无修饰符都在内。另外,此方法返回的结果不包括父类的任何字段。 此方法只是针对当前类的。
2、获取到对象的所有字段(包括所有继承的父类)
private static List<Field> getAllField(Object model){
Class clazz = model.getClass();
List<Field> fields = new ArrayList<>();
while (clazz!=null){
fields.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
clazz = clazz.getSuperclass();
}
return fields;
}