java - Java中的序列化顺序

标签 java serialization deserialization

我有一个 A 类收集 B 类和 C 类的列表。 类 C 包含类 B 列表(类 A 中的列表)的元素。

所以我序列化了类A,当我反序列化它时,我发现属性B为空(尽管我序列化它时不是这样)。

我认为这是因为序列化的顺序,例如该列表可能在类 C 的属性之后序列化,因此该属性为 null。

您认为这是一个可能的解释吗?如果是这样的话:我如何指定序列化的顺序(无需重新定义 readObject)?

提前致谢。

最佳答案

您传递给ObjectOutputStream.writeObject的对象被写入,在此期间遇到的任何对象(即非 transient 字段)都以嵌套方式写入。如果已写入对象,则会写入反向引用。以这种方式支持循环结构。反序列化与序列化相反。

你的问题不在这里。

我认为您可以通过定义 serialPercientFields 来指定顺序字段(如果我拼写正确的话),但它始终是嵌套的。

关于java - Java中的序列化顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59603951/

相关文章:

java - 所有类的序列号都相同吗?

json - 反序列化 json 无效属性名称

java - 如何检查运行时权限中点击 "Allow"选项

java - 警报管理器立即运行

java - 序列化具有关键事件的游戏状态。检索副本不需要我的键盘事件?

java - 将 XML 转换为对象 xstream ( Android )

java - 为什么重载 main 方法会出现语法错误?

java - 如何找到所有可用的迷宫路径?

.net - 如何确定给定命名空间中的所有对象是否可序列化?

java - 序列化 LinkedList<Object> 的语法