> 文档中心 > 单例模式中防止反射和反序列化创建新对象的处理办法

单例模式中防止反射和反序列化创建新对象的处理办法


DEMO

import java.io.Serializable;public class SingletonDemo implements Serializable {    private static SingletonDemo instance;    //私有构造方法    private SingletonDemo() { //防止反射 if(instance!=null)     throw new RuntimeException("不可通过反射创建对象");    }    public static SingletonDemo get(){ SingletonDemo s; if(instance==null){     synchronized (SingletonDemo.class){  s = instance;  if(s==null){      synchronized (SingletonDemo.class){   s = new SingletonDemo();      }      instance = s;  }     } } return instance;    }    //防止反序列化,反序列化时候直接返回 instance,不再次创建    private Object readResolve() { return instance;    }}

全民K歌