class A implements Serializable { B b; }; class B implements Serializable { C c; } class C implements Serializable { A a; } public static void main (String [] args) { A a = new A(); a.b = new B(); a.b.c = new C(); a.b.c.a = a; new ObjectOutputStream (new FileOutputStream ("somefile")).writeObject (a); }