获取object对象中的属性值

本文详细介绍了如何使用Java反射机制获取对象的属性名和属性值,包括获取所有属性和单个属性的方法,以及如何处理私有属性访问限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取object对象中的属性值

先创建一个实体类并向上转型为Object类

假设实体类如下

public class WordDto {

    private String uuId;

    private Long id;

    private Long aid;

    private String content;

}
		WordDto dto=new WordDto();
        dto.setAid(10000002L).setId(12L).setUuId("123456").setContent("资讯内容");
        //向上转型
        Object obj=dto;

准备工作已完成,现在先获取obj中的属性

		Field[] declaredFields = obj.getClass().getDeclaredFields();
        for(Field field:declaredFields){
            System.out.println(field.getName());
        } 

在这里插入图片描述
在这里插入图片描述
其中Field这个类主要是用在java反射中 通过反射机制获取类的属性。

获取obj中的所有属性值

		Method[] declaredMethods = obj.getClass().getDeclaredMethods();
        for(Method method:declaredMethods){
            System.out.println(method.getName());
            if(method.getName().startsWith("get")){
                Object o=method.invoke(obj);
                System.out.println("属性值get方法->"+o);
            }
        }

打印如下:
在这里插入图片描述
其中Method类位于 java.lang.reflect 包中,主要用于在程序运行状态中,动态地获取方法信息
getDeclaredMethods方法用于获取当前类的所有方法 ,而invoke就是执行这个方法并把结果返回到o中。

获取obj中的单个属性值

 		Field content = obj.getClass().getDeclaredField("content");
       //设置私有属性为public
       content.setAccessible(true);

getDeclaredField用来获取obj类中的单个属性,而 setAccessible 是将私有属性转变为公有属性,如果不这么做会出现以下异常

Exception in thread "main" java.lang.IllegalAccessException: Class com.tjyun.biz.news.controller.house.admin.ArticleController can not access a member of class com.tjyun.biz.news.pojo.dto.news.WordDto with modifiers "private"
   at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值