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

来源:互联网 发布:java 开发支付流程 编辑:程序博客网 时间:2024/06/07 08:40
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
通过实践可以得知反射是可以改变静态私有属性的;
小生查阅大神知识所做,此作不保留权利;
感谢观看;
原创粉丝点击