java反射获取子类或者父类的属性值
方法介绍
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反射获取子类或者父类的属性值相关推荐
- 通过反射获取子类和父类定义的属性
通过反射获取子类和父类定义的属 抛出问题 如何子类和父类中定义的所有(public/protected/dufault/private)属性? getDeclaredFields() public F ...
- java 反射获取父类的字段_java反射获取父类和子类字段值、赋值
这里将告诉您java反射获取父类和子类字段值.赋值,具体操作过程:java反射获取字段值.赋值 import org.springframework.util.ReflectionUtils; imp ...
- 利用java反射机制,子类从父类拷贝属性--解决信息修改类设计的模式
用例场景:在一个商户管理系统中,操作人员对一个已注册的商户进行修改,这就触发了一个商户修改的工作流,修改提交后,修改的商户信息和原商户信息会传递到审核人员的窗口进行审核,审核完毕后,新商户信息更新,同 ...
- java反射 获取属性_Java反射学习-3 - 反射获取属性,方法,构造器
1 packagecn.tx.reflect;2 3 importjava.lang.reflect.Constructor;4 importjava.lang.reflect.Field;5 imp ...
- Atitit利用反射获取子类 集合 以及继承树
Atitit利用反射获取子类 集合 以及继承树 想从父类往下找子类的确是不可能的,要知道只要类不是final的话谁都有继承它的自由不需要事前通知父类. Eclipse实现不是重父类开始找而是重子类往回 ...
- Android利用Java反射获取用户手机的rom定制系统及版本,EMUI,MIUI,ColorOS,FunthouchOS等
Android利用Java反射获取用户手机的rom定制系统版本及版本号,EMUI,MIUI,ColorOS,FunthouchOS等 前言 正文 结语 前言 现在手机厂商都推出了自己的基于Androi ...
- Java 反射 ---- 获取成员变量构造函数信息
这一章我们通过Java的反射获取某个类的成员变量构造函数信息,话不多说直接上代码. 先贴工具类获取类信息的方法: package com.blockChain;import java.lang.ref ...
- java异常类子类和父类的关系
java异常类子类和父类的关系 参考文章: (1)java异常类子类和父类的关系 (2)https://www.cnblogs.com/xiaoliangyuu/p/5596008.html 备忘一下 ...
- java反射获取注解id,通过反射获取注解(Annotation)
以下实例,定义一个注解.通过反射获取. 主要功能:为所注解过的参数和方法附加一些信息可以获取. 定义注解. import java.lang.annotation.*; @Retention(Rete ...
最新文章
- c与python的区别-c 跟 python的区别有哪些
- HDU 1556 前缀和 树状数组 线段树
- Java中 BigInteger 的常用方法与注意事项
- 802.1X和NAP整合实验手册
- 信息服务器怎么恢复,服务器数据恢复怎么弄
- Linux Shell编程三
- zabbix 监控mongodb
- MAMP Pro for Mac(PHP/MySQL开发环境工具)
- 33.启动流程,模块管理与 Loader
- Loj 6281. 数列分块入门 5
- python笔记:统计字符串里各种字符的个数 + pandas删除某列
- Divan and bitwise operations(组合数+思维)
- Java7 的Random伪随机数和线程安全的ThreadLocalRandom
- 一战赚了1090亿,“恐怖”的张一鸣!
- vol.132 《流浪地球》带火了中国科幻?(嘉宾:郑军)
- 信息学奥赛一本通 1005:地球人口承载力估计
- VMware安装华为存储模拟器
- 面试官:为什么 Kafka 如此之快?
- 网络爬虫反反爬小技巧(五)验证码
- 长沙App开发行业现状分析
热门文章
- 未来的计算机也无法突破冯诺依曼结构,冯诺依曼计算机的基本原理
- Adobe或QQ的oxc000007b错误解决方案.
- 判断闰年(YZOJ-1045)
- 集成环信easeUI添加联系人详情页面ListView的显示处理步聚
- 百度云盘限速破解方式汇总
- R语言学习笔记(1~3)
- TypeError: Descriptors cannot not be created directly.
- 苹果手机投影_没有无线网络的情况下手机无线投屏投影仪
- 正式宣布,小米10在高端市场碾压华为,夺下电商平台销量第一名
- Android APP memory用量如何回收