这个问题在这里已有答案:
9034
2018-02-20 23:05
起源
我不认为它们是“随机”数字,它们似乎是随意的。它们可能是类中成员/方法的某种哈希值。但总的猜测。我没有资料支持这一说法。 - Jon Newmuis
@JonathanNewmuis它是根据方法签名等计算的。 - JustinKSU
你是正确的,因为它们是计算值,虽然它们对我们没有任何意义,但它们实际上是随机的 - Chris Knight
@BrianRoach不完全相同的问题,因为那只是问为什么除了 1L 应该使用。 - Paul Bellora
答案:
那些“随机”数字可能是数字 将 已按照“当前”形式自动为该类生成 Java对象序列化规范......“当前”是“当前的当前” serialVersionUID
首先宣布“。
这将允许以前序列化的数据仍然存在 反序列化 - 同时向未来更明确地宣布突破性变化。
10
2018-02-20 23:14
Stackoverflow图例^ - Shivam
他们几乎可以肯定 不 随机数,而不是输出 serialver
工具。
3
2018-02-20 23:17
谢谢,我理解这一点,但是在代码中看到这些数字让我想知道所有这些类是否忘记在第一个实例中指定serialVersionUID并且正在改进它们,或者在开始时明确选择计算值(来自serialver)(和如果是这样,为什么) - Chris Knight
@ChrisKnight嗯,没有办法知道,有吗?我的猜测是#2,特别是因为代码可能是由技术作家编写的,即使是17年后程序员仍然不是一个很好理解的话题。我通常使用1L或-1L并永远保持这种状态。 - user207421