单例模式的类
public class Singleton {
private final static Singleton singleInstance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return singleInstance;
}
}
但是实现了Serializable接口后,就不是单例模式了。
导致这个问题的原因是序列化中的readObject会通过反射,调用没有参数的构造方法创建一个新的对象,这时候就需要重写readResolve方法返回对应的对象实例。
public class Singleton implements Serializable{
private final static Singleton singleInstance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return singleInstance;
}
private Object readResolve(){
return singleInstance;
}
}
网友评论