【发布时间】:2014-09-12 11:26:19
【问题描述】:
根据docs:
序列化运行时将一个版本号与每个可序列化类相关联,称为 serialVersionUID,在反序列化期间使用该版本号来验证序列化对象的发送方和接收方是否已为该对象加载了与序列化兼容的类。
如果serialVersionUID只是为了验证一个序列化对象的发送者和接收者是否已经加载了该对象的类,那么jvm不能使用类名本身进行验证。
【问题讨论】:
标签: java jakarta-ee
根据docs:
序列化运行时将一个版本号与每个可序列化类相关联,称为 serialVersionUID,在反序列化期间使用该版本号来验证序列化对象的发送方和接收方是否已为该对象加载了与序列化兼容的类。
如果serialVersionUID只是为了验证一个序列化对象的发送者和接收者是否已经加载了该对象的类,那么jvm不能使用类名本身进行验证。
【问题讨论】:
标签: java jakarta-ee
你错过了引用的后半部分:
在序列化方面兼容
如果您想拥有序列化类对象的多个“版本”,您需要一个可以更改的标识符。你不能只通过类名来做到这一点。
打个比方,这有点像说为什么我们需要传入HTTP版本(HTTP/1.1),因为它最终是HTTP。这取决于协议“版本”以及协议本身。
【讨论】:
好吧,要了解 Serializable Class 的概念及其 serialVersionUID,最好阅读其完整的 java doc(java.io.Serializable),并通过适当的示例进行解释。
您的问题似乎与this question. 重复 已就该主题进行了适当且成熟的讨论。希望这会有所帮助。
【讨论】: