Java使用反射通过对象属性获取属性的值

        // 通过属性获取传入对象的指定属性的值
        public String getValueByPropName(Student student,String propName) {
            String value = null;
            try {
                // 通过属性获取对象的属性
                //.getDeclaredFields() 获得某个类的所有声明的字段,即包括public、private和proteced但不包括父类申明字段
                //.getClass() 是⼀个对象实例的⽅法,只有对象实例才有这个⽅法,具体的类是没有的
                Field field = student.getClass().getDeclaredField(propName);
                // 对象的属性的访问权限设置为可访问
                //允许获取实体类private的参数信息
                field.setAccessible(true);
                // 获取属性的对应的值
                value = field.get(student).toString();
            } catch (Exception e) {
                return null;
            }
            return value;
        }

        //主程序
        public class TestReflectSet {
            private String readOnly;
            public String getReadOnly() {
                return readOnly;
            }

            public void setReadOnly( String readOnly ) {
                System.out.println("set");
                this.readOnly = readOnly;
            }    
        }

        //方法1:
        TestReflectSet t = new TestReflectSet();
        //得到一个类的Field 属性,
        Field f = t.getClass().getDeclaredField("readOnly");
        //然后设置可见性,然后设置了一个值,最后打印
        f.setAccessible(true);
        f.set(t, "test");
        System.out.println(t.getReadOnly());

    //方法2:
        //通过调用属性的set方法来完成赋值。
        Method setReadOnly = t.getClass().getMethod("setReadOnly", String.class);
        String s ="test2";
        setReadOnly.invoke(t,s);
        System.out.println(t.getReadOnly());

 

posted @   丶Ronnie  阅读(3404)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示