java - 为什么jvm生成serialVersionUID?

标签 java jakarta-ee

根据 docs :

The serialization runtime associates with each serializable class a version number, called a serialVersionUID, which is used during deserialization to verify that the sender and receiver of a serialized object have loaded classes for that object that are compatible with respect to serialization.

如果serialVersionUID只是为了验证序列化对象的发送者和接收者是否已经加载了该对象的类,那么jvm就不能使用类名本身来进行验证。

最佳答案

您错过了引文的后半部分:

that are compatible with respect to serialization

如果您想要序列化类对象的多个“版本”,您需要一个可以更改的标识符。您不能仅通过传递类名来做到这一点。

打个比方,这有点像说为什么我们需要传入 HTTP 版本(HTTP/1.1),因为它到底是 HTTP。这是由协议(protocol)“版本”以及协议(protocol)本身决定的。

关于java - 为什么jvm生成serialVersionUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25807221/

相关文章:

java - 从服务器获取 soap 对象响应。如何在 android 中解析 soap 对象

java - 在构造对象时是否有在 java 中键入 this.x = x 的快捷方式?

java - java中的系统类加载器有什么用?

java - 为什么我不能同时使用 JPA、数据库和 primefaces?

java - 如何在该本地主机 :8080/test/index. html 中打开我的资源?

java - 使用 Java 访问类路径中特定文件夹中的文件 - 仅适用于单个文件

java - 如何为字母字符制作一个与字母顺序不同的比较器

java - 使用 FileInputStream 从 Web 应用程序读取 .jks 文件

java - 使用条件对应的 hibernate 代码

Java EE 6 java.lang.NoClassDefFoundError glassfish