【发布时间】:2011-08-02 14:47:46
【问题描述】:
我有一个 Serializable 类,大约从 2004 年开始在生产中使用。但是,编写它的人忘记生成 serialVersionUID。
整个事情有点工作(有一个很大的评论警告不要碰课堂上的任何东西),但是在一个相关的不同班级工作时,我有一个InvalidCastException,所以我想添加serialVersionUID以确保该类正常工作。
问题是,是否可以在不破坏现有序列化实例的情况下添加这样的字段?它们有很多,并且没有简单的方法来修改它们。
我的想法来自于看到异常消息,大致如下:
java.io.InvalidClassException: the.problematic.Class; local class incompatible: stream classdesc serialVersionUID = -8802277085918151566, local class serialVersionUID = -3137213695071887162"
我认为我可以使用隐式序列(跟踪中的流 classdesc)作为序列,它应该保持向后兼容性。它是否正确?我(或多或少)确定我们在系统中获得的所有序列化实例都是相同的版本。
【问题讨论】:
标签: java serialization legacy