gpt4 book ai didi

java - 将 serialVersionUID 添加到已在使用中的可序列化类

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:54:39 27 4
gpt4 key购买 nike

我有一个 Serializable自 2004 年左右以来一直在生产中使用的类。但是,编写它的人忘记生成一个 serialVersionUID。 .

整个事情有点像工作(有一个很大的评论警告不要触摸类里面的任何东西),但是在相关的不同类里面工作时我有一个 InvalidCastException ,所以我想添加 serialVersionUID以确保类(class)正常运行。

问题是,是否可以在不破坏现有序列化实例的情况下添加这样一个字段?它们有很多,而且没有简单的方法来修改它们。

我的想法来自于看到异常消息,大致如下:

java.io.InvalidClassException: the.problematic.Class; local class incompatible: stream classdesc serialVersionUID = -8802277085918151566, local class serialVersionUID = -3137213695071887162"

我认为我可以使用隐式序列(跟踪中的流 classdesc)作为序列,它应该保持向后兼容性。它是否正确?我(或多或少)确定我们在整个系统中获得的所有序列化实例都具有相同的版本。

最佳答案

是的,为 serialVersionUID 指定与计算值完全相同的值应该可以防止向后兼容(例如,Eclipse 有一个选项可以做到这一点,称为“添加生成的序列版本 ID”)。

关于java - 将 serialVersionUID 添加到已在使用中的可序列化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6913957/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com