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