我正在扩展一个实现Serializable接口的类(ArrayBlockingQueue).Sun的文档(和我的IDE)告诉我,我应该设置这个值以防止恶作剧:
但是,强烈建议所有可序列化类显式声明serialVersionUID值,因为默认的serialVersionUID计算对类细节高度敏感,这些细节可能因编译器实现而异,因此在反序列化期间可能导致意外的InvalidClassExceptions.
现在,我不在乎放在那里的价值.有关系吗?
否 - 只要您在正确的时间更改它(即当您进行影响序列化的更改,例如删除字段时),您使用的值无关紧要.
为简单起见,我建议从0开始,每次需要时将其增加1.
该序列化规范进行了详细介绍.
对serialVersionUID唯一重要的是该类的二进制兼容的序列化版本具有相同的serialVersionUID; 也就是说,如果你没有对类的序列化形式进行任何重大更改,那就没关系了.
当然,更好的选择是使用序列化提供给您的高级选项,以便永远不会有任何重大更改.我建议阅读readResolve()等.有效的Java详细介绍了该领域的一些棘手问题.