我有一个可以读取和写入磁盘的对象数组。但现在我想向我的类添加一个成员变量。如果我添加成员变量,我将收到类不兼容错误,并且将无法读取序列化对象。有没有一种方法可以修改用于序列化的类的成员变量,而不会失去读取持久对象的能力......或者有一种简单的方法将持久对象转换为新类?
最佳答案
This post从 SO 应该可以回答你的问题。它甚至解释了如何查找编译器自动创建的串行版本(如果您未指定)(在引用页面中查找 serialver
)。老文章仍然很有趣......
简而言之,对于不耐烦的人:
- 如果序列版本不改变,序列化会自动处理新的或删除的成员
- 如果您没有指定,IDE 或 JDK 的
serialver
工具可以为您提供编译器自动生成的串行版本
所以你只需要找到这个serialversion,添加魔术字段staticfinallongserialVersionUID = xx
,并且因为你只添加一个成员变量,所以一切都应该没问题。
(引用的帖子是谷歌针对java序列化多个版本
的第一个答案)
关于Java对象序列化-如何添加成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23522228/