java反射 获取Object属性值

项目场景:

一个添加员工信息的功能,通过shiro获取当前登录用户的信息,取出其中的createId的值,在通过set方法写入。

问题描述:

通过获取的登录用户的信息发现,它是一个Object对象,然后我就想取出其中我想要的id值,可是却不会,然后经过我多方百度查询,最终得以解决。

解决方案:

通过java反射可以获取属性值,其中多次遇见某个属性值是“private”的报错情况,用以下方法得以解决。

//获取登录用户信息
Object object=SecurityUtils.getSubject().getSession().getAttribute(Constants.SESSION_USER);
//获取当前对象(object)的类
Class jClass=object.getClass();
//获取所需的属性值
PropertyDescriptor pd = new PropertyDescriptor("id",jClass);
//获得读取属性值的方法
Method getMethod = pd.getReadMethod();
//读取属性值
Object o = getMethod.invoke(object);
//设置并转换数据类型
emp.setCreateId(Math.toIntExact((Long) o));
//调用set方法
emp.setIsDelete(0);
//插入添加的数据
empService.insert(emp);

大致就是以上的代码块,新手小白,刚上路,有许多知识不清楚,还望大家多多指点一下我,谢谢啦。

从以下的博文中拓展了关于这方面的知识,特别感谢:
1.java反射–PropertyDescriptor类:(属性描述器)、Introspector类
2.JAVA 反射获得object对象对应的实体类的属性、及属性值
3.使用java中的反射获得object对象的属性值
4.Object get["属性"]; java反射技术通过对象和属性名得到属性值

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值