定义一个含有私有属性的类 public class PrivateField { private String username = "鹏程万里" ; } 实例测试方法 // 创建一个类的对象 PrivateField privateField = new PrivateField(); // 获取对象的Class Class? claz
定义一个含有私有属性的类
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