7 回答

TA贡献2019条经验 获得超9个赞
如果要对存在序列化传输的要求的话,这个就有问题了,因为一个已经序列化的对象,反序列化的时候会重新生成一个对象。(违法了单例)
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;
}
}

TA贡献1784条经验 获得超2个赞
public class Singleton {
private static Singleton singleton;
private Singleton(){
}
public static Singleton getsychronizedInstance() {
if (null == singleton) {
synchronized (Singleton.class) {
if(null == singleton)
singleton = new Singleton();
}
}
return singleton;
}
}
添加回答
举报