java serialVersionUID无法正常工作

时间:2014-01-22 10:19:20

标签: java serializable

我正在开发一个具有一些参数作为配置数据的应用程序。我编写了一个swing应用程序,并将一个类声明为ConfigClass。我将配置参数字段添加到此类,并通过可序列化的实现将其存储到文件中。
在读写期间,我应用加密来保护密码。 在我的应用程序的未来版本中,我将添加或删除一些字段,并希望我的客户不会丢失值。所以我尝试使用“serialVersionUID = 34L”当我的客户升级我的应用程序时,新应用程序可以读取旧配置并获取旧的/新的公共字段。通过这种方式,我的客户不再需要重新输入数据。问题是当我的del字段和上面的协议不能正常工作!为什么呢?

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

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

1 个答案:

答案 0 :(得分:1)

如果计划在序列化和反序列化之间更改类,则Java序列化是错误的机制,这可能在Java序列化用于存储数据时发生。

在删除字段的情况下,序列化表示期望该字段存在,并且不会发生错误,因为无处可写数据。

您应该寻找替代机制,例如XML或JSON来存储数据。