2014-01-22 75 views
-1

我正在開發一個應用程序有一些參數作爲配置數據。我編寫了一個swing應用程序,並將一個類聲明爲ConfigClass.I將配置參數字段添加到此類中,並通過可序列化的實現將其存儲到文件中。
在讀寫過程中,我使用加密來保護密碼。 在我的應用程序的未來版本中,我將添加或刪除一些字段,並希望我的客戶不會失去價值。所以我嘗試使用「serialVersionUID = 34L」,當我的客戶升級我的應用程序時,新的應用程序可以讀取舊的配置並獲取舊/新的通用字段。這樣我的客戶就不會再次重新輸入數據。問題是當我del字段和以上協議不起作用!爲什麼?java serialVersionUID不工作,因爲我需要

public class UserConfiguration implements Serializable { 
    static final long serialVersionUID = 42L; 

    //USER Define User Config elements 
    private String bankName; 
    private String bankCode; 
} 
+2

[管理序列化Java對象的多個版本]可能的重複(http://stackoverflow.com/questions/3678136/managing-serveral-versions-of-serialized-java-objects) – Augusto

+0

因爲它是一個不好的協議。對於不同版本的配置,您需要更復雜的特殊處理。 – Fildor

回答

1

如果您計劃在使用Java序列化存儲數據時發生的序列化和反序列化之間更改類,則Java序列化是錯誤的機制。

在刪除字段的情況下,序列化表示法預計該字段在那裏,當它不是錯誤發生時,因爲沒有地方寫數據。

您應該尋找其他機制,如XML或JSON來存儲數據。

相關問題