我明白序列化是保存對象實例的一種快速方法,包括對象內的所有變量,不包括靜態引用以及用transient關鍵字標記的變量。在Java中使用序列化的最佳方法是什麼?
我不是很好的I/O和我的應用程序有大約50班,其中有三個明顯的不同對象(包含在其中的對象)。
例如,我有一個動物類,Employee類,車輛類別。所有這一切都包含實例對象,在運行時,它包含自己的子類,方法等
我的問題是,什麼是節約系列化所有這些信息的最簡單的方法?我已經和我的教授討論過這個問題,他提出了一個類似於包含類「Data.class」的東西,它在所有內容中都有「手」,然後對其進行序列化。哪一個最終會保存它引用到.ser文件的每個對象。
我想過使得「Data.class」,然後讓我的所有50個班,延長數據。 然後有我的保存方法做這樣的事情
public void saveData(){
Data myData = new Data()
try
{
FileOutputStream fileOut =
new FileOutputStream("Data.ser");
ObjectOutputStream out =
new ObjectOutputStream(fileOut);
out.writeObject(myData);
out.close();
fileOut.close();
}catch(IOException i)
{
i.printStackTrace();
}
}
不過,我似乎無法得到這個工作。我相信這是因爲我正在創建一個Data的空白實例,其中只包含所有子類的默認值。當我打算保存時(在相應對象中的所有值都被填充之後),我正在調用該函數,但是我做了錯誤的事情,無法弄清楚什麼。
任何幫助將不勝感激。當然,我不必手動序列化三種不同類型對象的每一個實例?它已經超過了300,我不想這樣做。
此外,我給數據一個serialVersionID並實現數據的可序列化接口。
'數據myData的=新的數據();'應中省略,而串行化'serializable' ...;) – Mordechai
或序列化'this'爲數據對象本身。 – Mordechai
@ M.M。真的,我在晚上回答了這個問題,所以我沒有考慮。謝謝 –