首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

执行反序列化的接收方jvm如何知道在序列化时使用了哪个序列化used

执行反序列化的接收方 JVM 如何知道在序列化时使用了哪个序列化工具?

在执行反序列化时,接收方的 JVM 需要知道在序列化时使用了哪个序列化工具。为了实现这一点,通常会在序列化的数据中包含序列化工具的标识信息。

一种常见的做法是在序列化数据的开头部分添加一个特定的标记,用于指示使用的序列化工具。这个标记可以是一个字符串、一个数字或者其他形式的标识符。接收方的 JVM 在反序列化时会读取这个标记,并根据标记来确定使用哪个序列化工具进行反序列化操作。

另外,有些序列化工具会在序列化数据中包含序列化工具的版本信息。这样接收方的 JVM 在反序列化时可以根据版本信息来选择合适的序列化工具和版本进行反序列化操作。

总结起来,接收方的 JVM 通过读取序列化数据中的标记信息或版本信息来确定在序列化时使用了哪个序列化工具,从而正确地执行反序列化操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

java.io.InvalidClassException异常解决

serialVersionUID用作Serializable类中的版本控件。如果您没有显式声明serialVersionUID,JVM将根据您的Serializable类的各个方面自动为您执行此操作,如Java(TM)对象序列化规范中所述。 序列化运行时将每个可序列化类与版本号相关联,称为serialVersionUID,在反序列化期间使用该版本号来验证序列化对象的发送方和接收方是否已加载与该序列化兼容的该对象的类。如果接收者为具有与相应发送者类的serialVersionUID不同的对象加载了一个类,则反序列化将导致InvalidClassException。 通俗理解就是serialVersionUID是适用于Java的序列化机制,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是java.io.InvalidClassException。 serialVersionUID两种生成方式: a.显式声明,该字段必须是static,final和long类型: private static final long serialVersionUID = 1L; b.如果没有显式声明serialVersionUID,JVM将使用自己的算法生成默认SerialVersionUID。

01
  • 领券