更新时间:2023-12-03 13:37:22
@k袁_cn 分析得很清楚。
但是如果要对存在序列化传输的要求的话,这个就有问题了,因为一个已经序列化的对象,反序列化的时候会重新生成一个对象。(违法了单例)
public class Singleton implements Serializable{
private static Singleton singleton;
private Singleton(){
}
public static Singleton getInstance() {
if (null == singleton) {
synchronized (Singleton.class) {
if(null == singleton)
singleton = new Singleton();
}
}
return singleton;
}
private Object readResolve() {
return INSTANCE;
}
}
上面的代码变得好复杂,所以***的单例是采用枚举实现。
public enum Singleton{
INSTANCE;
public Singleton getInstance(){
return Singleton.INSTANCE;
}
}