后端开发 - Java反射获取类的所有的属性和父类的所有属性

后端开发 - Java反射获取类的所有的属性和父类的所有属性

问题

想获取一个类的所有属性和父类的所有属性

看一下官方文档中关于获取类的属性的两个方法:

  1. getDeclaredFields

返回一个字段对象数组,反映由这个类对象表示的类或接口声明的所有字段。这包括公共、受保护、默认(包)访问和私有字段,但不包括继承字段。

  1. getFields

返回一个包含“字段”对象的数组,该数组反映由这个“类”对象表示的类或接口的所有可访问的公共字段。

这两个方法都不能获取所有属性,那我们自己写一个方法。

思路

首先构建一个列表用来存放所有的属性;

获取使用getDeclaredFields()函数获取本类内部的所有属性,并addAll()到列表中;

使用clazz.getSuperclass()方法获取父类,然后获取父类中的所有属性,将其添加到列表中;

最后递归检查父类是否有父类,直到获取不到父类;

编码

	/**
	 * 获取本类及其父类的属性的方法
	 * @param clazz 当前类对象
	 * @return 字段数组
	 */
	private static Field[] getAllFields(Class<?> clazz) {
   
		List<Field> fieldList = new ArrayList<>();
		while (clazz != null){
   
			fieldList.addAll(new ArrayList
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值