- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我读到What is a serialVersionUID and why should I use it?和 static final long serialVersionUID = 1L 。从这两篇 SO 帖子中我大致了解了它是什么。它是可序列化类的 ID,用于在反序列化期间检查发送方和接收方是否兼容。如果不是InvalidClassException
被抛出。
但是我对一些事情很好奇:
serialVersionUID
似乎分为2个“类型”。 19 个数字后跟 L xxxxxxxxxxxxxxxxxxxL 或 269L 或 1L。这些数字似乎不是任意选择的。如果我们只需要一个身份证,任何号码都行不通吗?这个设计背后的逻辑是什么。serialVersionUID
它可以是正的,也可以是负的。有什么不同。再次如果 serialVersionUID
是为了识别的目的,为什么需要负数呢?我们还没有用完所有的正数。MirroredTypedException.java
serialVersionUID
如果没有 L
则为 269 。这是唯一的serialVersionUID
我发现没有 L
。这是为什么? L
是什么意思?快照(此快照不包括所有内容)
最佳答案
serialVersionUID seems can be divide into 2 "type"
不是真的。它们都只是long
。
For the 20 characters long serialVersionUID it can be positive or negative.
这些都是随机选择的。如果您在 Long.MIN_VALUE
和 Long.MAX_VALUE
之间随机选择一个数字,那么大多数情况下它将有 19 位数字,一半情况下它会是负数。
有时它们可能是根据某些内容(例如源代码、xml 定义等)的哈希值生成的。如果哈希函数足够好,那么数字的分布将与随机选择一样。
Why is that? What is the meaning of L?
L
identifies a literal of type long
。 269
不需要它,因为它适合 int
的范围,并且会自动向上转换为 long
。
关于java - 不带L的serialVersionUID,xxxxxxxxxxxxxxxxxL与1L,正与负,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45761399/
我是一名优秀的程序员,十分优秀!