方法介绍

1.获取所有属性

 private static List<Field> getAllField(Class<?> class1){List<Field> list=Lists.newArrayList();while (class1!= Object.class){list.addAll(Arrays.stream(class1.getDeclaredFields()).collect(Collectors.toList()));//获取父类class1=class1.getSuperclass();}return list;}

2.获取属性值的方法

 public Object get(Object obj)throws IllegalArgumentException, IllegalAccessException

父类使用

父类定义

@Data
@AllArgsConstructor
@NoArgsConstructor
class Parent{private Integer parentId;private String parentName;
}

获取父类属性值

 public static void main(String[] args) {//造数据List<Parent> parentList= Lists.newArrayList();Parent parent=new Parent(1,"张三");parentList.add(parent);parent=new Parent(2,"张三");parentList.add(parent);//获取所有属性List<Field> list1 =getAllField(Parent.class);//遍历parentList.forEach(parent1 -> {//遍历属性集合list1.forEach(field -> {//设置权限field.setAccessible(true);try {//获取属性名称String fieldName = field.getName();//获取属性值Object fieldValue = field.get(parent1);System.out.println(fieldName+":"+fieldValue);} catch (IllegalAccessException e) {throw new RuntimeException(e);}});});}

结果打印

parentId:1
parentName:张三
parentId:2
parentName:张三

子类使用

子类定义

@Data
@EqualsAndHashCode(callSuper = true)
class Son extends Parent{private Integer sonId;private String sonName;public Son(Integer parentId, String parentName, Integer sonId, String sonName) {super(parentId, parentName);this.sonId = sonId;this.sonName = sonName;}
}

获取子类属性值

public static void main(String[] args) {//造数据List<Son> sonList=Lists.newArrayList();Son son=new Son(1,"张三",11,"张三儿子1");sonList.add(son);son=new Son(2,"张三",12,"张三儿子2");sonList.add(son);//获取子类属性以及子类的父类属性List<Field> list2 = getAllField(Son.class);//遍历sonList.forEach(son1 -> {//遍历属性集合list2.forEach(field -> {//设置权限field.setAccessible(true);try {//获取属性名称String fieldName = field.getName();//获取属性值Object fieldValue = field.get(son1);System.out.println(fieldName+":"+fieldValue);} catch (IllegalAccessException e) {throw new RuntimeException(e);}});});}

结果打印

sonId:11
sonName:张三儿子1
parentId:1
parentName:张三
sonId:12
sonName:张三儿子2
parentId:2
parentName:张三

java反射获取子类或者父类的属性值相关推荐

  1. 通过反射获取子类和父类定义的属性

    通过反射获取子类和父类定义的属 抛出问题 如何子类和父类中定义的所有(public/protected/dufault/private)属性? getDeclaredFields() public F ...

  2. java 反射获取父类的字段_java反射获取父类和子类字段值、赋值

    这里将告诉您java反射获取父类和子类字段值.赋值,具体操作过程:java反射获取字段值.赋值 import org.springframework.util.ReflectionUtils; imp ...

  3. 利用java反射机制,子类从父类拷贝属性--解决信息修改类设计的模式

    用例场景:在一个商户管理系统中,操作人员对一个已注册的商户进行修改,这就触发了一个商户修改的工作流,修改提交后,修改的商户信息和原商户信息会传递到审核人员的窗口进行审核,审核完毕后,新商户信息更新,同 ...

  4. java反射 获取属性_Java反射学习-3 - 反射获取属性,方法,构造器

    1 packagecn.tx.reflect;2 3 importjava.lang.reflect.Constructor;4 importjava.lang.reflect.Field;5 imp ...

  5. Atitit利用反射获取子类 集合 以及继承树

    Atitit利用反射获取子类 集合 以及继承树 想从父类往下找子类的确是不可能的,要知道只要类不是final的话谁都有继承它的自由不需要事前通知父类. Eclipse实现不是重父类开始找而是重子类往回 ...

  6. Android利用Java反射获取用户手机的rom定制系统及版本,EMUI,MIUI,ColorOS,FunthouchOS等

    Android利用Java反射获取用户手机的rom定制系统版本及版本号,EMUI,MIUI,ColorOS,FunthouchOS等 前言 正文 结语 前言 现在手机厂商都推出了自己的基于Androi ...

  7. Java 反射 ---- 获取成员变量构造函数信息

    这一章我们通过Java的反射获取某个类的成员变量构造函数信息,话不多说直接上代码. 先贴工具类获取类信息的方法: package com.blockChain;import java.lang.ref ...

  8. java异常类子类和父类的关系

    java异常类子类和父类的关系 参考文章: (1)java异常类子类和父类的关系 (2)https://www.cnblogs.com/xiaoliangyuu/p/5596008.html 备忘一下 ...

  9. java反射获取注解id,通过反射获取注解(Annotation)

    以下实例,定义一个注解.通过反射获取. 主要功能:为所注解过的参数和方法附加一些信息可以获取. 定义注解. import java.lang.annotation.*; @Retention(Rete ...

最新文章

  1. c与python的区别-c 跟 python的区别有哪些
  2. HDU 1556 前缀和 树状数组 线段树
  3. Java中 BigInteger 的常用方法与注意事项
  4. 802.1X和NAP整合实验手册
  5. 信息服务器怎么恢复,服务器数据恢复怎么弄
  6. Linux Shell编程三
  7. zabbix 监控mongodb
  8. MAMP Pro for Mac(PHP/MySQL开发环境工具)
  9. 33.启动流程,模块管理与 Loader
  10. Loj 6281. 数列分块入门 5
  11. python笔记:统计字符串里各种字符的个数 + pandas删除某列
  12. Divan and bitwise operations(组合数+思维)
  13. Java7 的Random伪随机数和线程安全的ThreadLocalRandom
  14. 一战赚了1090亿,“恐怖”的张一鸣!
  15. vol.132 《流浪地球》带火了中国科幻?(嘉宾:郑军)
  16. 信息学奥赛一本通 1005:地球人口承载力估计
  17. VMware安装华为存储模拟器
  18. 面试官:为什么 Kafka 如此之快?
  19. 网络爬虫反反爬小技巧(五)验证码
  20. 长沙App开发行业现状分析

热门文章

  1. 未来的计算机也无法突破冯诺依曼结构,冯诺依曼计算机的基本原理
  2. Adobe或QQ的oxc000007b错误解决方案.
  3. 判断闰年(YZOJ-1045)
  4. 集成环信easeUI添加联系人详情页面ListView的显示处理步聚
  5. 百度云盘限速破解方式汇总
  6. R语言学习笔记(1~3)
  7. TypeError: Descriptors cannot not be created directly.
  8. 苹果手机投影_没有无线网络的情况下手机无线投屏投影仪
  9. 正式宣布,小米10在高端市场碾压华为,夺下电商平台销量第一名
  10. Android APP memory用量如何回收