解决:在构造函数中添加判断
- private Singleton() {
- if (singleton != null) {
- throw new RuntimeException("Singleton constructor is called... ");
- }
- }
解决:在Sinleton中增加readResolve方法
- private Object readResolve() {
- return getSingleton();
- }
反序列化其实也是利用反射的构造函数来构建,但和类里面的构造函数不是同一个构造函数,所以第一个方法不可以解决反序列化的问题。