gpt4 book ai didi

java - 如何反序列化具有各种 serialVersionUID 的 Java 对象?

转载 作者:行者123 更新时间:2023-11-30 06:26:10 25 4
gpt4 key购买 nike

假设我有一个 Foo 类,它在过去有 serialVersionUID 1、3 和 17,我需要能够将所有三个版本读入 Foo 实例。我该怎么做?

我特别需要知道字节流中保存的是哪个版本,所以我可以做一些数据迁移。如何访问 readObject() 中的 serialVersionUID?还是已经太晚了?

最佳答案

使用不同的类加载器来反序列化对象的不同版本。之后,您必须根据以前的版本手动初始化通用(可能是最新的)实例的内部状态(您必须为此编写一个转换器)。

确保您的类加载器路径完全不同。 如果一个 super 类加载器可以加载一个类,它就会加载。因此,所有类加载器应该彼此完全分开(都不应该是其他类加载器的 super 类)。

关于java - 如何反序列化具有各种 serialVersionUID 的 Java 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14730299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com