从2004年开始,我已经有了一个Serializable
类,该类已在生产中使用。但是,编写它的人忘记了生成serialVersionUID
。将SerialVersionUID添加到已被使用的可序列化类中
事情排序作品(有一个很大的评论警告,在班上不碰任何东西),但在不同的相关工作类,而我有一个InvalidCastException
,所以我要添加serialVersionUID
可以肯定的整该班正常工作。
问题是,是否有可能添加这样一个字段,而不存在序列化实例中断?它们中有很多,并且没有简单的方法来修改它们。
我的想法来自看到异常消息,这是沿着线的东西:我一直以为我可以使用隐式串行(流classdesc在跟踪)作为串行
java.io.InvalidClassException: the.problematic.Class; local class incompatible: stream classdesc serialVersionUID = -8802277085918151566, local class serialVersionUID = -3137213695071887162"
,它应该保持向后兼容性。它是否正确?我(或多或少)确定我们在系统中获得的所有序列化实例都是相同的版本。
我明白了,我不确定这个id的计算方式是在jdk版本中定义和保持不变的 –