答案 0 :(得分:16)
是的,默认的Java序列化适用于循环引用。序列化对象C时,该字段将包含对已经序列化的对象A的反向引用,而不是再次序列化它。
答案 1 :(得分:3)
是的,Java序列化适用于循环引用,请阅读here以获取更多信息,以帮助您理解Java序列化可以执行的操作。
答案 2 :(得分:2)
是的。
我做了非常非常简单的测试,至少完成了序列化。我认为它是正确的,但你可以检查一些额外的行。
import java.io.*;
class A implements Serializable { B b; }
class B implements Serializable { C c; }
class C implements Serializable { A a; }
class Test {
public static void main( String [] args ) throws IOException {
A a = new A();
a.b = new B();
a.b.c = new C();
a.b.c.a = a;
new ObjectOutputStream( new ByteArrayOutputStream( ) ).writeObject( a );
System.out.println("It works");
}
}
答案 3 :(得分:0)
如果将对象序列化为XML,则可以直接查看引用。子对象仅序列化一次。对已经序列化的子对象的任何引用(在序列化结构中的任何位置)将仅指向该文件中的该对象。
序列化循环引用可能会有点混乱,所以如果可以的话,你可能想要避免使用它们。