我阅读了什么是 serialVersionUID,为什么要使用它?和static final long serialVersionUID = 1L。从这两个 SO 帖子中,我大致了解了它是什么。它是 Serializable 类的 ID,用于在反序列化期间检查发送方和接收方是否兼容。如果不是 aInvalidClassException
则抛出。
不过我很好奇一些事情:
serialVersionUID
似乎分为2个“类型”。19 个数字后跟 L xxxxxxxxxxxxxxxxxxxL 或 269L 或 1L。这些数字似乎不是随意选择的。如果我们只需要一个ID,任何数字都行不通吗?这个设计背后的逻辑是什么。- 对于 20 个字符长
serialVersionUID
,它可以是正数或负数。有什么不同。再次如果serialVersionUID
用于识别目的,为什么我们需要有一个负数?我们还没有用完所有的正数。 - 在269 中
MirroredTypedException.java
没有. 这是我发现的唯一没有. 这是为什么?是什么意思?serialVersionUID
L
serialVersionUID
L
L
快照(此快照不包括所有这些)