java反射机制获取所有属性(包括所有父类)

 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;
}

 


版权声明:本文为WZH577原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。