为什么jvm会生成serialVersionUID?

时间:2014-09-12 11:26:20

标签: java java-ee

根据docs

  

序列化运行时将每个可序列化类与版本号相关联,称为serialVersionUID,在反序列化期间使用该版本号来验证序列化对象的发送方和接收方是否已加载与该序列化兼容的该对象的类。 / p>

如果serialVersionUID仅用于验证序列化对象的发送方和接收方是否已加载该对象的类,则jvm无法使用类名本身进行验证。

2 个答案:

答案 0 :(得分:4)

你错过了报价的后半部分:

  

与序列化兼容

如果要拥有序列化类对象的多个“版本”,则需要一个可以更改的标识符。只要传入类名就不能这样做。

举一个类比,这有点像说我们为什么需要传递HTTP版本(HTTP/1.1),因为它最终是HTTP。这是决定协议“版本”以及协议本身。

答案 1 :(得分:0)

那么,要了解Serializable Class及其serialVersionUID的概念,最好的地方就是阅读完整的java doc(java.io.Serializable),这可以用适当的例子来解释。

您的问题似乎与this question.重复。已就此主题进行了适当且成熟的讨论。希望这会有所帮助。