3
public static class Singleton implements Serializable {
private static Singleton ourInstance;
public static Singleton getInstance()
{
if (ourInstance == null)
{
ourInstance = new Singleton();
}
return ourInstance;
}
private Singleton() {
}
}
Singleton instance = Singleton.getInstance();
objectOutputStr.writeObject(instance);
Singleton singleton1 = (Singleton) objInputStr.readObject();
Singleton singleton2 = (Singleton) objInputStr.readObject();
System.out.println(singleton1);//A
System.out.println(singleton2);//B
为什么用于singleton1和singleton2不同的输出(线标为A和B)。是否有可能使两个引用相同。与我添加如下行Java序列化。不同的引用
你正在写一个实例的流,那么你读了两遍。这不会像你发布的那样工作。 – f1sh
Ops,有人在编辑我的回复时关闭了这个问题: – idelvall
Singleton意味着这个对象是这个类的唯一实例。 这只在运行时有意义**,并且完全是间接的(取决于您的应用程序逻辑,而不是任何语言限制)。所以序列化过程不能存储这个对象的这个特征。另一方面,序列化协议不存储关于实例号或id的任何其他信息,换句话说,具有相同结构的不同实例在序列化之后是不可区分的。 所以不行,这是不可能的,当然,除了你在你的应用逻辑中处理这个。 – idelvall