如果兩個對象引用指向相同的可序列化的Object,那麼在java中的序列化過程中會發生什麼? 可序列化的對象是否被保存兩次?
例如:如果兩個對象引用指向相同的可序列化對象,那麼在java中的序列化過程中會發生什麼?
class King implements java.io.Serializable {
private String name="Akbar";
}
class Kingdom implements java.io.Serializable {
King goodKing=new King();
King badKing=goodKing;
}
public class TestSerialization {
public static void serializeObject(String outputFileName,
Object serializableObject) throws IOException {
FileOutputStream fileStream=new FileOutputStream(outputFileName);
ObjectOutputStream outStream=new ObjectOutputStream(fileStream);
outStream.writeObject(serializableObject);
outStream.close();
}
public static void main(String[] args) {
Kingdom kingdom=new Kingdom();
try {
TestSerialization.serializeObject("Kingdom1.out", kingdom);
}catch(IOException ex) {
ex.getMessage();
}
}
}
現在,只有一個對象狀態是否被保存兩個goodKing和badKing refrences或國王對象獲取保存兩次?
您是否嘗試用一個和兩個引用來保存類,並比較結果的文件大小? – Smutje
嘗試反序列化王國,看看goodKing和badKing是否指向同一個國王。如果是的話,那麼在王國有一個國王就足夠使王國反序列化了。由此我們可以猜測只保存一個對象狀態。 – fajarkoe
@Smutje生成的文件總是顯示大小爲1KB –