java - 反序列化版本冲突

标签 java deserialization

我的问题是什么是实现升级过时对象的好方法?

例如假设你有这样一个类:

public class Foo() implements Serializable {
    int a;
    String b;
}

然后你序列化这个对象。稍后您可以通过添加以下方式为您的类添加更多功能:

...
int c;
...

您仍想保留序列化对象中的信息,但我知道如果您尝试反序列化它,将会发生冲突。那么有没有办法(可能通过检查 serialVersionUID)为 int c 设置一个值,知道它不存在?

谢谢

最佳答案

弃用现有类,创建一个具有新结构的新类,并在新类中实现一个可以获取旧对象并将其转换为新版本的构造函数。

假设您根据接口(interface)创建了旧类,您可以用新类实现相同的接口(interface),新对象仍将与旧类兼容。

关于java - 反序列化版本冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13508753/

相关文章:

java - 我可以将 URI 连接到 Camel 代理类的每个方法吗?

java - 如何将JTextArea中选中的文本变成String?

java - 过滤/搜索并仅显示图标

java - Spring Security OAuth2 - 如何使用 OAuth2Authentication 对象?

python - 如何反序列化分割后的json数据

c# - Alexa Skill 请求反序列化失败 - json 到 SkillRequest 对象 C#

c# - 在 C# 中使用属性反序列化 XML

java - 无法使用 Dynamics CRM token (401 未经授权)

iOS 序列化/反序列化无法正常工作

json - 使用 jackson 反序列化惰性列表