我和一位同事讨论了可序列化类的 serialVersionUID:他总是以 a 开头,serialVersionUID = 1L
然后在类有一些重大变化时将其加一。
JDK 类似乎总是使用更复杂的、生成的 serialVersionUID,例如在java.lang.String
类中:
private static final long serialVersionUID = -6849794470754667710L;
现在我的同事询问这种serialVersionUID 与更简单的serialVersionUID(如1L、2L、3L...)相比的优势?
我们也在 SOF 上进行了搜索,但对给出的答案不是很满意,例如在Why generate long serialVersionUID 而不是简单的 1L?.
在我看来,使用生成的 ID 的优点是它不需要任何关于“旧”类版本的信息。但是当手动增加 ID 时,您必须知道迄今为止的最高值。这可能听起来微不足道(只需查看当前的 serialVersionUID 并将其增加 1),但在更大的软件项目、更大的开发团队或分布式环境中可能会更复杂。