题目:对于下方的类,如何改变类实例的name属性值
package com.test.refect;
public class Private {
private String name = "chunge";
public String getName(){
return name;
}
}
解法:利用java反射机制,通过设置setAccessible(true)设置压制JAVA访问控制检查
实现代码如下
public class Main {
public static void main(String[] args) throws Exception{
Private p = new Private();//创建类实例
Class<?> clazz = p.getClass();//获得实例对应Class类
Field field = clazz.getDeclaredField("name");//利用getDeclareField方法获取类的私有name属性
field.setAccessible(true);//压制JAVA访问控制检查
field.set(p,"lisi");//修改实例的名字
System.out.println(p.getName());
}
}