ich habe in meinem Programm Objekte serialisiert und wieder deserialisiert mit ObjectOutpupStream bzw. ObjectInputStream.
In der Klasse sind allerdings einige Membervariablen transient, so dass sie nach dem deserialisieren nur einen Standardwert haben wie z.b. null.
Gibt es da auch eine Möglichkeit, diesen Standardwert zu ändern, so dass z.B. ein transienter Vector nach dem deserialisieren nicht nur den Wert null hat, sondern den Wert „new Vector()“?
Ich habe in der Klasse auch schon einen Standardkonstruktor (ohne Parameter) angelegt, aber beim deserialiseren wird wohl kein Konstruktor aufgerufen.
Ein Konstruktor wird nicht aufgerufen, da ja keine neue Instanz erzeugt wird, sondern eine bereits bestehende wiederhergestellt wird.
Um den (de)serialize - Vorgang zu beeinflussen, muss keine Klasse die Methoden
private void writeObject(ObjectOutputStream out) throws IOException;
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException;
implementieren. In diesen Methoden kannst du dann die als transient deklarierten Felder manuell initialisieren.
lg
georg
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]