【发布时间】:2015-11-07 17:33:21
【问题描述】:
我在我的 android 应用中实现了 Serializable 对象以保持向后兼容性。
遗憾的是,我这样创建了我的课程:
Class Foo implements Serializable {
private static long serialVersionUID = 928374172L;
[...]
}
我痛苦地发现,Java 不会将此值识别为 serialVersionUID,因为缺少“最终”语句。
问题是我无法创建private static final long serialVersionUID,因为已经有一个像这样命名的对象...:/
有没有机会保存这个类,还是我必须创建一个Foo2 类并将所有保存的数据复制到其中?也许有更好的方法?因为我必须在不丢失所有已保存数据的情况下修改此类。
【问题讨论】:
-
为什么重命名其他变量可行?
-
除非您修改用于序列化对象的类,否则您不需要 serialVersionUID。您可以简单地对它们进行反序列化。如果您在序列化之后修改类,然后在将对象反序列化到当前版本期间,您将知道该类已更改,则此字段很有用。
-
您的意思是您需要保持与已在已部署应用的设备上序列化的数据的向后兼容性?
-
@amitmahajan 因为我需要修改类而不丢失所有保存的数据.. :(
标签: java android serializable