Java如遍历获取对象中的所有属性和值

当我们需要对对象的所有值进行遍历的时候,依次进行get、set方法非常的麻烦,这个时候我们就会用到对象属性和值的遍历,应用代码如下:

java 复制代码
public void traverseObject(Object object){
    // object是目标对象
    try{
        //通过getDeclaredFields()方法获取对象类中的所有属性(含私有)
        Field[] fields = object.getClass().getDeclaredFields();
        for (Field field : fields) {
            //设置允许通过反射访问私有变量
            field.setAccessible(true);
            //获取字段属性名称
            String name = field.getName();
            //获取字段的值
            String value = field.get(object).toString();
            //其他自定义操作
            System.out.println("字段的属性名称:"+name);
            System.out.println("字段的值:"+value);
        }
    }
    catch (Exception ex){
        //处理异常
    }

}

说明:

  1. getClass()方法用来获取目标对象的类。
  2. getDeclaredFields()方法用来获取类中所有声明的字段,包括public、private和proteced,但是不包括父类的申明字段,实际应用时如果想要获取从父类继承的字段,可使用getFields()方法,但是此方法仅能获取公共(public)的字段。
  3. field.setAccessible(true)是为了让我们在反射时能够访问私有变量,当Field的isAccessible()值为false时,无法通过反射访问对应字段,所以我们要先设置成true。
  4. field.get(voucher)方法需要进行异常处理,否则编译时会提示:Unhandled exception: java.lang.IllegalAccessException。
相关推荐
张萌杰8 小时前
深度学习的基础知识(常见名词解释)
人工智能·深度学习·机器学习·1024程序员节
开开心心就好1 天前
免费无广告卸载工具,轻便安全适配全用户
linux·运维·服务器·网络·安全·启发式算法·1024程序员节
开开心心就好2 天前
图片格式转换工具,右键菜单一键转换简化
linux·运维·服务器·python·django·pdf·1024程序员节
徐子童4 天前
网络协议---TCP协议
网络·网络协议·tcp/ip·面试题·1024程序员节
扫地的小何尚6 天前
NVIDIA RTX PC开源AI工具升级:加速LLM和扩散模型的性能革命
人工智能·python·算法·开源·nvidia·1024程序员节
数据皮皮侠AI7 天前
上市公司股票名称相似度(1990-2025)
大数据·人工智能·笔记·区块链·能源·1024程序员节
开开心心就好7 天前
系统清理工具清理缓存日志,启动卸载管理
linux·运维·服务器·神经网络·cnn·pdf·1024程序员节
Evan东少10 天前
[踩坑]笔记本Ubuntu20.04+NvidiaRTX5060驱动+cuda+Pytorch+ROS/Python实现人脸追踪(环境准备)
1024程序员节
不爱编程的小陈11 天前
C/C++每日面试题
面试·职场和发展·1024程序员节
开开心心就好11 天前
右键菜单管理工具,添加程序自定义名称位置
linux·运维·服务器·ci/cd·docker·pdf·1024程序员节