Re(3): Java - Object Serialization
Geizhals » Forum » Programmierung » Java - Object Serialization (7 Beiträge, 165 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
. Vom Autor zurückgezogen oder Autor hat seine Registrierung nicht bestätigt  (substitute am 09.04.2007, 18:25:03)
..  Re(2): Java - Object Serialization  (Somnatic am 09.04.2007, 18:43:55)
.  Re: Java - Object Serialization  (Norret am 10.04.2007, 09:03:05)
..  Re(2): Java - Object Serialization  (Somnatic am 10.04.2007, 10:47:56)
...
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 Alle Chronologisch Zum Vorgänger
 
Melden nicht möglich
....  Re(4): Java - Object Serialization  (Somnatic am 11.04.2007, 11:31:19)
 

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