关闭checkVersionUID检查

时间:2015-05-08 14:13:13

标签: java serialization jvm

我使用序列化机制来保存和加载来自HDD的对象。我认为定义字段" serialVersionUID"对我来说是多余的。

我怎么能说JVM没有比较这些字段?

Exception in thread "main" java.io.InvalidClassException: ClientRepository; local class incompatible: stream classdesc serialVersionUID = -477189107700903771, local class serialVersionUID = 1

1 个答案:

答案 0 :(得分:0)

您可以添加固定的静态长终结字段serialVersionUID。然后,只需要在结构发生变化时进行更改。

否则javac编译器会根据类的结构计算serialVersionUID。并将隐藏的字段添加到类中(如默认构造函数)。

最后一种方法是实现readObject/writeObject,允许两个密切版本差异之间的兼容性,通过在不同版本上进行转换。