单例设计模式-反射破坏设计模式
学习
单例防的是正常new对象
但是反射不讲道理:它能直接找到你的私有构造方法,强行开权限,无视单例规则,直接创建新对象。
1.找到这个类(房子)
2.获取无参构造方法对象(门锁)
3.取消访问检查(暴力开锁)
/*
Class clazz = Singleton.class;
Constructor constructor = clazz.getDeclaredConstructor();
constructor.setAccessible(true);
*/
解决方法是 加一个flag判断是不是第一次创建 不是的话抛出异常 然后加一个同步锁 解决多线程问题



