Java - Object Serialization
Geizhals » Forum » Programmierung » Java - Object Serialization (7 Beiträge, 155 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
...
Re(3): Java - Object Serialization
11.04.2007, 11:21:52
Also ich habe das jetzt noch einmal überprüft nachdem ich mit einem Freund darüber gesprochen habe. Er meinte das man das nicht so sehen kann, das B "nur" die Erweiterung von A ist sonder eigentlich ist B gleich A plus einigen Erweiterungen die in B implementiert sind. Diese Art von Anschauung wäre eigentlich richtig wenn ich da an meinen OOP Unterricht erinnere.

Ein Blick in die Javadoc verrät den Grund jedoch warum myInt nicht serialisiert wird:
During deserialization, the fields of non-serializable classes will be initialized using the public or protected no-arg constructor of the class. A no-arg constructor must be accessible to the subclass that is serializable. The fields of serializable subclasses will be restored from the stream.

Kurz gesagt alle geerbten Variablen von einer non-serializeable Oberklasse werden nicht serialisiert sondern bei der Deserialisierung über den Default-Konstruktor initialisiert.

Du könntest jedoch die beiden Methoden überschreiben, um das Problem zu lösen:

private void writeObject(java.io.ObjectOutputStream out)
     throws IOException
private void readObject(java.io.ObjectInputStream in)
     throws IOException, ClassNotFoundException;

Oder du könntest A Serializable machen. Dadurch ist B auch serializable und die Felder von A werden genau so serialisiert. Wenn sonst niemand von A erbt, bzw. alles von A erbt Serializeable sein soll dann wäre das imo die beste möglichkeit. Oder du machst dir eine dummy Variable die eigentlich nur den Inhalt von myInt hat und im Default Konstruktor initialisierst du myInt dann mit der dummy Variable.
Mit freundlichen Grüßen Norret
Zum Vergrößern klicken!
Posten ist silber, denken ist Gold ;-)
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung