1.在反射中改变静态量时:
set(null, values);
下面为一个简单的一个单例
public class Moth {
private static Moth abc=new Moth();
private Moth(){
System.out.println("哈哈");
}
public static Moth getA(){
if (abc==null){
return null;
}
return abc;
}
}
然后通过反射对私有静态对象进行改变
测试类如下
public class test { public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { Class<?> aClass = Moth.class; Field a = aClass.getDeclaredField("abc"); a.setAccessible(true); a.set(null, null); System.out.println(a.get(aClass)); System.out.println(); } }
结果显示
哈哈
null
Process finished with exit code 0
通过实践可以得知反射是可以改变静态私有属性的;
感谢观看;