我有一个 A 类收集 B 类和 C 类的列表。 类 C 包含类 B 列表(类 A 中的列表)的元素。
所以我序列化了类A,当我反序列化它时,我发现属性B为空(尽管我序列化它时不是这样)。
我认为这是因为序列化的顺序,例如该列表可能在类 C 的属性之后序列化,因此该属性为 null。
您认为这是一个可能的解释吗?如果是这样的话:我如何指定序列化的顺序(无需重新定义 readObject)?
提前致谢。
最佳答案
您传递给ObjectOutputStream.writeObject
的对象被写入,在此期间遇到的任何对象(即非 transient 字段)都以嵌套方式写入。如果已写入对象,则会写入反向引用。以这种方式支持循环结构。反序列化与序列化相反。
你的问题不在这里。
我认为您可以通过定义 serialPercientFields
来指定顺序字段(如果我拼写正确的话),但它始终是嵌套的。
关于java - Java中的序列化顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59603951/