gpt4 book ai didi

java - 生成 serialVersionID 而不是 1L、2L、

转载 作者:搜寻专家 更新时间:2023-10-30 23:02:05 24 4
gpt4 key购买 nike

我和一位同事就可序列化类的 serialVersionUID 进行了讨论:他总是以 serialVersionUID = 1L 开始,然后在类发生重大变化时将其递增 1。

JDK 类似乎总是使用更复杂、生成java.lang.String 类中的 serialVersionUID:

private static final long serialVersionUID = -6849794470754667710L;

现在我的同事询问这种 serialVersionUID 与更简单的 serialVersionUID(如 1L、2L、3L...)相比的优势?

我们也在 SOF 上进行了搜索,但对给出的答案不是很满意,例如 Why generate long serialVersionUID instead of a simple 1L? .

在我看来,使用生成的 ID 的优势在于它不需要有关“旧”类版本的任何信息。但是当手动增加 ID 时,您必须知道到目前为止的最高值。这听起来可能微不足道(只需查看当前的 serialVersionUID 并将其增加 1),但在更大的软件项目、更大的开发团队或分布式环境中可能会更复杂。

最佳答案

使用生成的版本的优点是,如果它在没有 serialVersionUID 的情况下逃逸到野外,它与该类的先前版本兼容。

话虽如此,您的同事增加它几乎肯定是错误的。 serialVersionUID 只应在您接受类已发生不可挽回的更改并且您有意引入序列化不兼容的情况下更改。这种情况在自然界中很少见,仅限于以不兼容的方式更改类的继承或成员字段类型的情况。如果您决定制作一个类 Serializable,您应该已经接受了一个不会发生这种情况的制度

关于java - 生成 serialVersionID 而不是 1L、2L、,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40615456/

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