Hoće, serializacija je dovoljno pametna da zaključi da je u pitanju i isti objekat (u primeru označen promenljivom "d") i da nema potrebe 2 puta da ga čuva.
Kod većih objekata bitno bi se povećala količina nepotrebnih podataka da nije tako.
Pozdrav
Code:
import java.io.*;
public class SerializationTest implements Serializable {
static final String FILENAME = "test.tst";
SerializationTest left;
SerializationTest right;
SerializationTest(SerializationTest l, SerializationTest r) {
this.left = l;
this.right = r;
}
public static void main(String args[]) {
SerializationTest d = new SerializationTest(null, null);
SerializationTest c = new SerializationTest(d, null);
SerializationTest b = new SerializationTest(null, d);
SerializationTest a = new SerializationTest(b, c);
try {
FileOutputStream outFile = new FileOutputStream(FILENAME);
ObjectOutputStream out = new ObjectOutputStream(outFile);
out.writeObject(a);
out.flush();
out.close();
outFile.close();
FileInputStream inFile = new FileInputStream(FILENAME);
ObjectInputStream input = new ObjectInputStream(inFile);
SerializationTest e = (SerializationTest)input.readObject();
input.close();
inFile.close();
System.out.println("(e.left.right == e.right.left) = " + (e.left.right == e.right.left));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}