Hi,
ich möchte ein Objekt mehrfach (nachdem es verändert wurde) mit einem ObjectOutputStream serialisieren.
ObjectOutputStream merkt sich jedoch, dass es dieses Objekt bereits serialisiert hat und schaut es sich nicht mehr weiter an. Die Änderungen werden also nicht erkannt und ignoriert. Packt man das am anderen Ende wieder aus erhält man mehrfach das zuerst serialisierte Objekt mit den gleichen Eigenschaften.
Habt ihr ne Idee wie ich das umgehen kann?
Ich häng mal nen Beispielprogramm an um es zu verdeutlichen:
Die erzeugte Ausgabe sieht in etwa so aus:
Es fällt also auf, dass beim zweiten writeObject-Aufruf nur auf den Stream geschrieben wird das wir das schonmal so hatten.
ich möchte ein Objekt mehrfach (nachdem es verändert wurde) mit einem ObjectOutputStream serialisieren.
ObjectOutputStream merkt sich jedoch, dass es dieses Objekt bereits serialisiert hat und schaut es sich nicht mehr weiter an. Die Änderungen werden also nicht erkannt und ignoriert. Packt man das am anderen Ende wieder aus erhält man mehrfach das zuerst serialisierte Objekt mit den gleichen Eigenschaften.
Habt ihr ne Idee wie ich das umgehen kann?
Ich häng mal nen Beispielprogramm an um es zu verdeutlichen:
Code:
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class Test implements Serializable {
private String xyz = "foo";
public static void main(String[] args) {
try {
Test t = new Test();
ObjectOutputStream oos = new ObjectOutputStream(System.out);
oos.writeObject(t);
oos.flush();
System.out.println("");
t.xyz = "bar";
oos.writeObject(t);
oos.flush();
System.out.println("");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Die erzeugte Ausgabe sieht in etwa so aus:
Code:
(Bytemüll)Test(Bytemüll)Ljava/lang/String;(Bytemüll)foo
(Bytemüll)
Es fällt also auf, dass beim zweiten writeObject-Aufruf nur auf den Stream geschrieben wird das wir das schonmal so hatten.