Hallo Forum,
ich habe eine Anwendung geschrieben, mit der ich inzwischen zahlreiche Objekte erstellt habe, die ich durch Serialisierung auf der Festplatte gespeichert habe. Nun ist die Notwendigkeit entstanden, allen Objekten eine zusätzliche Eigenschaft hinzuzufügen.
Wenn ich allerdings die zugrundeliegende Klasse anpasse, lassen sich die gespeicherten Objekte nicht mehr deserialisieren, da die Klasse nicht mehr zu den Objekten passt. Meine Objekte haben einen recht abstrakten Inhalt. Deshalb versuche ich mal ein Analogbeispiel, um das Problem zu veranschaulichen:
Angenommen, ich hätte zahlreiche Objekte der Klasse "Haus" gespeichert und möchte diesen die Boolsche Variable "feuermelderInstalliert" hinzufügen.
Ich dachte ich mache sowas wie:
Meine Vorstellung war, dass ich dann mit der Klasse Haus meine vorhandenen Objekte (z.B. meinHaus) deserialisiere und diese dann irgendwie nach ErweitertesHaus caste:
Aber scheinbar habe ich die Vererbungslehre noch nicht richtig begriffen, oder es fehlen noch wichtige Schritte, denn der Ansatz funktioniert so nicht (Haus cannot be cast to ErweitertesHaus).
Hättet Ihr daher einen kleinen Denkanstoß für mich, wie ich auf dem angedachten oder vielleicht auch auf einem ganz anderen Wege das Problem lösen könnte? Das wäre ziemlich klasse! ...
ich habe eine Anwendung geschrieben, mit der ich inzwischen zahlreiche Objekte erstellt habe, die ich durch Serialisierung auf der Festplatte gespeichert habe. Nun ist die Notwendigkeit entstanden, allen Objekten eine zusätzliche Eigenschaft hinzuzufügen.
Wenn ich allerdings die zugrundeliegende Klasse anpasse, lassen sich die gespeicherten Objekte nicht mehr deserialisieren, da die Klasse nicht mehr zu den Objekten passt. Meine Objekte haben einen recht abstrakten Inhalt. Deshalb versuche ich mal ein Analogbeispiel, um das Problem zu veranschaulichen:
Angenommen, ich hätte zahlreiche Objekte der Klasse "Haus" gespeichert und möchte diesen die Boolsche Variable "feuermelderInstalliert" hinzufügen.
Ich dachte ich mache sowas wie:
Java:
public class ErweitertesHaus extends Haus {
Boolean feuermelderInstalliert;
ErweitertesHaus() {
feuermelderInstalliert=false;
}
}
Meine Vorstellung war, dass ich dann mit der Klasse Haus meine vorhandenen Objekte (z.B. meinHaus) deserialisiere und diese dann irgendwie nach ErweitertesHaus caste:
Java:
ErweitertesHaus meinErweitertesHaus = new(ErweitertesHaus);
meinErweitertesHaus = (ErweitertesHaus) meinHaus;
Aber scheinbar habe ich die Vererbungslehre noch nicht richtig begriffen, oder es fehlen noch wichtige Schritte, denn der Ansatz funktioniert so nicht (Haus cannot be cast to ErweitertesHaus).
Hättet Ihr daher einen kleinen Denkanstoß für mich, wie ich auf dem angedachten oder vielleicht auch auf einem ganz anderen Wege das Problem lösen könnte? Das wäre ziemlich klasse! ...
Zuletzt bearbeitet: