我正在开发一个具有一些参数作为配置数据的应用程序。我编写了一个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;
}
答案 0 :(得分:1)
如果计划在序列化和反序列化之间更改类,则Java序列化是错误的机制,这可能在Java序列化用于存储数据时发生。
在删除字段的情况下,序列化表示期望该字段存在,并且不会发生错误,因为无处可写数据。
您应该寻找替代机制,例如XML或JSON来存储数据。