Java单例模式能否通过反射改变静态属性对象

xiaoxiao2021-02-28  72

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 通过实践可以得知反射是可以改变静态私有属性的; 感谢观看;
转载请注明原文地址: https://www.6miu.com/read-54169.html

最新回复(0)