如果类没有定义修改私有属性的方法;那么借助java反射机制,通过Class,取得Field,通过设置Field.setAccessible(true) ,就可以调用set方法为私有属性设值;
import java.lang.reflect.Field;
public class ReflectionTest{
public static void main(String[] args) throws Exception{
PrivateTest pt = new PrivateTest();
Class<?> clazz = PrivateTest.class;
Field field = clazz.getDeclaredField("name");
field.setAccessible(true);
field.set(pt,"world");
System.out.println(pt.getName());
}
}
class PrivateTest{
private String name="hello";
public String getName(){
return name;
}
}
更多详情