我相信当单个对象被序列化然后在系列中过多地反序列化时,会产生多个单例实例。
你怎么能避免这种情况?
答案 0 :(得分:4)
通常,在创建Singleton时,请确保只有一个实例。你可以这样做:
public static class Singleton{
private final static Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance == null)
instance = new Singleton();
return instance;
}
}
将构造函数放到private
可确保除此类之外没有人可以创建Singleton实例。
你只需要用getInstance调用Singleton,而Singleton就可以完成所有的工作。
答案 1 :(得分:4)
Joshua Bloch谈到使用枚举作为单身人来避免Effective Java中的这个特定问题。看看这篇文章:Why Enums are Better Singletons - 或者直接从Bloch here阅读。