我有一個包含整數foo的序列化對象MyObject。我將值10設置爲整數foo,並使用writeObject()將對象保存到文件中。防止Java序列化設置默認值
我將整數條添加到對象MyObject。我將值15設置爲整數欄,然後使用readObject()加載舊的序列化文件。
舊的可串行化文件不包含整數條,因此整數欄將得到值0.如果舊的可序列化文件不包含變量欄,我想將值15保留在欄中。
我應該重寫readObject()或者我怎樣才能阻止readObject()將「默認值」設置爲未知對象?
我想這樣做是因爲在構造函數中我設置了自己的默認值,並且想使用我自己的默認值來控制版本控制。
謝謝,這是一個很好的答案。我很高興我沒有被卡住序列化。你會建議什麼?我需要一種將對象存儲爲文件的方式,並對其進行良好的版本控制。 – Mikuz 2012-02-13 20:31:00
如果長期存儲是你的目標,我肯定會說使用類似flexjson的東西。您可以隨時使用任何您需要的對象結構來讀取數據。 Java序列化要困難得多,如果沒有相同的對象和封裝結構,就不可能接近邊界。每當我嘗試使用Java序列化進行長期存儲時,我最終都會將其取出並替換它。 – chubbsondubs 2012-02-13 21:36:19
找到XStream非常有用。 – Mikuz 2012-02-15 22:56:59