Loading

Java通过反射机制修改类中的私有属性的值

定义一个含有私有属性的类 

public class PrivateField {

    private String username = "鹏程万里";

}

实例测试方法 

// 创建一个类的对象
PrivateField privateField = new PrivateField();
// 获取对象的Class
Class<?> clazz = privateField.getClass();
// 获取指定名字的私有域
Field field = clazz.getDeclaredField("username");
// 设置压制访问类型检查,只有这样,才能获取和设置某个具体类的Field对应的值。
// 参数为 true时 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。
// 如果为true是,能够正常运行,如果为false则会抛出异常信息:java.lang.IllegalAccessException
field.setAccessible(true);
System.out.println(field.get(privateField));
// 设置私有域的值
field.set(privateField, "2019");
// 输出被改变的属性值
    System.out.println(field.get(privateField));
}

输出结果

鹏程万里
2019

 

posted @ 2023-01-23 10:20  Roc-xb  阅读(43)  评论(0)    收藏  举报

易微帮源码


易微帮官网