gpt4 book ai didi

不同java版本的Java Map/List序列化/反序列化?

转载 作者:行者123 更新时间:2023-12-02 05:25:18 24 4
gpt4 key购买 nike

如果我使用 java 版本序列化 Map(或 List),并尝试使用其他 java 版本(其中serialVersionUID 已更改)反序列化它,会发生什么情况?我想它会失败。

如果您创建一个库供其他人使用,那么序列化对象的首选方式是使用 Map、List 等 Java 对象还是使用自制对象数组?

例如 List<MyObject>MyObject[]Map<String, MyObject>MyObject2[] (MyObject2 包含 key 和 MyObject)?

最佳答案

如果您控制该类并且没有更改serialVersionUID,则也可以反序列化旧版本中的类实例。这里为java提供了一个概念,叫做二进制兼容性。二进制兼容性的大部分灵 active 来自于对类、接口(interface)、字段、方法名称的符号引用的后期绑定(bind)的使用:

http://docs.oracle.com/javase/7/docs/platform/serialization/spec/version.html

Java 的核心类,例如HashMap、ArrayList、Vector...即使在java的 future 版本中会涉及到该类,也将是可反序列化的。

如果您希望在自己的类中控制版本控制,则只需手动提供serialVersionUID字段并确保它始终相同,无论您对类文件进行什么更改。

另请参阅这篇文章: http://www.oracle.com/technetwork/articles/java/javaserial-1536170.html

关于不同java版本的Java Map/List序列化/反序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26095510/

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