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

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值