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反射技术通过对象和属性名得到属性值

你可能感兴趣的:(开发问题集,java,反射)