java反射获取子类或者父类的属性值

2023-05-16

方法介绍

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:张三
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 在pycharm中输入import torch 报错怎么解决

    大家在学习深度学习过程中 xff0c 会安装pytorch xff0c 但是明明安装了对应的pytorch xff0c 在pycharm中编写代码import torch时还报错 我们也已经选择了conda xff0c 选对了对应的Pyth
  • 在Ubuntu22.04条件下,如何打开树莓派4B的串口

    打开串口 树莓派4B一共有6个串口 xff0c 之前的版本只有2个串口 这6个串口中 xff0c 有5个时硬件串口 xff0c 还有个mini串口 xff0c 这5个硬件串口在我们需要使用外设时 但是 xff0c 默认情况下 xff0c 5
  • 编写Python语言,使用循环求解1到100之间数的偶数和

    a 61 1 sum 61 0 while a lt 61 100 if a 2 61 61 0 sum 43 61 a a 43 61 1 print 39 1和100之间的偶数的和为 39 sum
  • 编写Python语言,求100到999之间的水仙花数

    for sum in range 100 1000 bai 61 sum 100 shi 61 sum 10 10 ge 61 sum 10 if bai 3 43 shi 3 43 ge 3 61 61 sum print sum 39
  • 用到树莓派进行串口通信,使用方法ser.inwaiting()时遇到错误:OSError:[Errno 25] Inappropriate ioctl for device怎么解决

    其实 xff0c 出现这个问题是因为没有禁用蓝牙串口 xff0c 解决方法也很简单 xff0c 将蓝牙串口关闭即可 xff0c 具体方法如下 xff1a 1 打开终端 xff0c 输入 xff1a cd boot firmware进入新的文
  • Windows右键自定义

    Windows右键自定义 使用注册表一 设置名称和快捷键二 设置图片三 设置调用命令四 测试 其他文件类型 xff08 目录 文件 驱动器以及一些行为 xff09 特定文件后缀只对当前用户生效二级菜单参考 使用注册表 这里先做一个对任意文件
  • Linux服务器安装图形化界面和使用Vncserver远程连接

    Linux安装图形化界面Server with GUI 输入命令查看有哪些软件可以安装 yum grouplist 安装Server with GUI yum groupinstall Server with GUI 如果服务器中安装了do
  • pip下载镜像源汇总

    为了每次不用到处查找镜像源 xff0c 所以做个经常会使用的镜像源汇总 xff1a 清华大学 xff1a https pypi tuna tsinghua edu cn simple 阿里云 xff1a http mirrors aliyu
  • [最全]解决ModuleNotFoundError: No module named ‘pip‘(Windows/Linux系统;原生环境/Conda环境)

    问题简述 在使用python的过程中遇到命令行出现ModuleNotFoundError No module named 39 pip 39 的报错 是很要命的一件事 因为pip是安装库文件命令 出了问题会导致没有办法安装需要的环境 而且使
  • tar.gz包的安装方法

    tar gz 以 tar gz为扩展名的是一种压缩文件 xff0c 在Linux和OSX下常见 xff0c Linux和OSX都可以直接解压使用这种压缩文件 windows下的WinRAR也可以使用 xff0c 相当于常见的RAR和ZIP格
  • Git常用命令及方法大全

    Git常用命令及方法大全 下面是我整理的常用 Git 命令清单 几个专用名词的译名如下 Workspace xff1a 工作区Index Stage xff1a 暂存区Repository xff1a 仓库区 xff08 或本地仓库 xff
  • debian最小化安装后的配置

    本次安装的是debian11 xff0c 安装时只选择标准工具 xff0c 安装成功后希望使用suckless系列软件 xff0c 包括dwm和st 配置内容依次为 xff1a 配置wifi 配置无线网络 在 etc network int
  • Vue中的computed和watch的区别和使用

    1 computed使用和介绍 computed计算属性 xff1a 只能对最终结果进行运算功能 xff0c 只计算一次 xff0c 具有缓存功能 xff0c 能实现计算属性与普通属性之间的双向绑定 computed的作用 1 减少模板中的
  • 【蓝桥杯省赛JavaB组真题详解】成绩统计(2020)

    题目描述 成绩统计 小蓝给学生们组织了一场考试 xff0c 卷面总分为 100 分 xff0c 每个学生的得分都是一个 0 到 100 的整数 如果得分至少是 60 分 xff0c 则称为及格 如果得分至少为 85 分 xff0c 则称为优
  • ThinkPad相机打开后显示为灰色相机斜杠不可用

    打开相机显示如图 xff1a 网络上一堆驱动啥问题导致 xff0c 有些人就火急火燎的去安装驱动啥的 xff0c 没必要 xff0c 一般来说不是驱动的问题 xff0c 只是对ThingPad操作不熟悉而已 解决办法 xff1a 点击下图电
  • 【bcrypt】go使用bcrypt进行加密和验证

    前言 项目开发过程中 xff0c 在注册这一块 xff0c 少不了对用户密码的加密 xff0c 今天使用bcrypt来实现对密码的加密和验证 bcypt加密和md5加密的不同点在于 xff0c 后者更安全 xff0c 对于同一字符串每次生成
  • 【深度学习环境01】 Windows10+WSL2迁移d盘+ Ubuntu 22

    前言 Windows10 xff1a Win系统稳定度舒适度没话说 xff0c 之前用双系统Linux实在太折腾 xff0c 我要布置环境用来开发程序的 xff0c 不是每次安装软件就要debug WSL2迁移d盘 xff1a Wsl是Wi
  • Arduino智能垃圾桶

    Arduino智能垃圾桶 硬件准备工作原理接线方式代码实物补充 舵机和超声波 调试舵机超声波传感器 这个小项目是基于Arduino设计的一款感应式智能开盖垃圾桶这个项目只要一点C语言的基础 xff0c 懂得一点点物联网知识就可以 xff0c
  • p1593 因子和

    因子和 题目描述 输入两个整数 a和 b xff0c 求 a b a b a b 的因子和 由于结果太大 xff0c 只要输出它对 9901 取模的结果 输入格式 仅一行 xff0c 为两个整数 a 和 b 输出格式 输出一行一个整数表示答
  • 如何在指定文件夹下安装python的虚拟环境

    1 什么是python中的虚拟环境 之前我们安装python第三方库时 xff0c 都是直接通过 pip install xx 包名 的方式进行安装的 xff0c 这样会使第三方库直接安装到Python系统环境中 xff0c 同时默认安装的

随机推荐