java - 在 Java 中扩展 Serializable 类时,我为 serialVersionUID 选择什么重要吗?

标签 java serialization

我正在扩展一个实现 Serializable interface 的类 (ArrayBlockingQueue) . Sun 的文档(和我的 IDE)建议我应该设置这个值以防止恶作剧:

However, it is strongly recommended that all serializable classes explicitly declare serialVersionUID values, since the default serialVersionUID computation is highly sensitive to class details that may vary depending on compiler implementations, and can thus result in unexpected InvalidClassExceptions during deserialization.

现在,我不在乎要放什么值(value)。有关系吗?

最佳答案

不 - 只要您在正确的时间更改它(即当您进行影响序列化的更改时,例如删除一个字段),您使用什么值并不重要。

为简单起见,我建议从 0 开始,每次需要时将其增加 1。

serialization spec有更多细节。

关于java - 在 Java 中扩展 Serializable 类时,我为 serialVersionUID 选择什么重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/605828/

相关文章:

java - 安卓:位置; Activity 和服务

c# - 反序列化有时会生成对象列表或空对象的 JSON 字符串

java - 从没有数据库的 JavaFX 应用程序保存数据

java - 反序列化保存的对象时出现 NullPointerException 吗?

java - 在一个 catch block 中处理多种不同类型的异常?

java - 为什么即使每个字段都是 4 字节对齐的,Java 对象中仍存在内部碎片?

java - 隐藏数组适配器中的元素,而不是删除它们

java - Drools:如何在规则的 lhs 中使用枚举?

json - Jackson 2 错误地序列化 Java java.nio.file.Path

java - 停止java中继承树中某些类类型的序列化