如何确定正确的串行版本ID?

Rig*_*eda 5 java serialization

如何确定正确的串行版本ID?它应该是使用某些生成器或任何整数的任何大长值吗?

coo*_*ird 5

坦率地说,只要serialVersionUID你班级的不同版本之间存在差异,那就非常重要了.

如果同一个类的两个版本具有不同的可序列化字段具有相同的serialVersionUID- 那么可能会在执行序列化时导致问题.

此外,如果对类的更改不会影响序列化(例如,类中的可序列化字段保持不变),则serialVersionUID可以保持不变.

像Eclipse这样的IDE会自动为类生成一个ID,这些类Serializable基于字段和有关类的其他信息来实现,因此这可能是生成唯一ID的最简单路径.

有关该主题的进一步阅读,发现Java序列化API的秘密将是一个很好的阅读.有一个名为"版本控制"的部分讨论了这个serialVersionUID问题.