Java 不带L的serialVersionUID,XXXXXXXXXXXXXXXXXX L对1L,正对负
我阅读和阅读。从这两篇SO文章中,我大致了解了它是什么。它是可序列化类的ID,用于在反序列化期间检查发送方和接收方是否兼容。如果不是,则抛出Java 不带L的serialVersionUID,XXXXXXXXXXXXXXXXXX L对1L,正对负,java,serialization,jdk1.7,Java,Serialization,Jdk1.7,我阅读和阅读。从这两篇SO文章中,我大致了解了它是什么。它是可序列化类的ID,用于在反序列化期间检查发送方和接收方是否兼容。如果不是,则抛出InvalidClassException 然而,我对一些事情感到好奇: serialVersionUID似乎分为2个“类型”。19个数字后跟L XXXXXXXXXXXX L或269L或1L。这些数字似乎不是随意选择的。如果我们只需要一个身份证,任何号码都不行吗?这种设计背后的逻辑是什么 对于长度为20个字符的serialVersionUID可以是正数或负
InvalidClassException
然而,我对一些事情感到好奇:
似乎分为2个“类型”。19个数字后跟L XXXXXXXXXXXX L或269L或1L。这些数字似乎不是随意选择的。如果我们只需要一个身份证,任何号码都不行吗?这种设计背后的逻辑是什么serialVersionUID
- 对于长度为20个字符的
可以是正数或负数。有什么区别。同样,如果serialVersionUID
用于识别,为什么我们需要一个负数?我们还没有用完所有的正数serialVersionUID
- 在
中,MirroredTypedException.java
是269,没有serialVersionUID
。这是我找到的唯一没有L
的L
。为什么呢?serialVersionUID
的含义是什么L
Long.MIN\u值
和Long.MAX\u值
之间随机选择一个数字,则大多数情况下它将有19位数字,一半时间为负数
有时,它们可能是从某个内容的散列(例如源代码、xml定义等)生成的。如果哈希函数是好的,那么数字的分布将与随机选择相同
为什么呢?L是什么意思
。269
不需要它,因为它适合int
的范围,并且会自动向上转换为长的
serialVersionUID可分为2个“类型”
不是真的。它们都是长的
对于20个字符长的serialVersionUID,它可以是正数或负数
这些都是随机选择的。如果您在Long.MIN\u值
和Long.MAX\u值
之间随机选择一个数字,则大多数情况下它将有19位数字,一半时间为负数
有时,它们可能是从某个内容的散列(例如源代码、xml定义等)生成的。如果哈希函数是好的,那么数字的分布将与随机选择相同
为什么呢?L是什么意思
。269
不需要它,因为它适合int
的范围,并且会自动向上转换为长的