【问题标题】:java serialVersionUID not works as I neededjava serialVersionUID 不能按我的需要工作
【发布时间】:2014-01-22 10:19:20
【问题描述】:

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

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

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

【问题讨论】:

标签: java serializable


【解决方案1】:

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

在您删除一个字段的情况下,序列化表示期望该字段存在并且当它不是错误时发生,因为没有地方可以写入数据。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多