Angenommen, ein Objekt wird auf einen anderen Host übertragen. Kann es dort wirklich anhand der vom Netzwerk erhaltenen Informationen eingesetzt werden? Es kann – allerdings muss dazu die Java Virtual Machine die Klasse des Objekts kennen.
In Listing B wird das serialisierte Objekt aus der Datei gelesen. Anschließend sollen mithilfe der Methode getClass() eines Objekts Informationen über seine Klasse gefunden werden. Wenn eine Klasse nicht in dem Klassenpfad enthalten ist, kommt die Ausnahme ClassNotFoundException.
Listing B
Das Externalizable Interface
Es kann vorkommen, dass besondere Anforderungen für die Serialisierung eines Objekts vorliegen. Zum Beispiel könnte man bestimmte sicherheitskritische Teile des Objekts, wie Passwörter, nicht aufbewahren und übertragen wollen. Oder es ist unnötig, ein bestimmtes Objekt zu speichern, auf das vom Haupt-Objekt verwiesen wird, da sein Wert nach der Wiederherstellung entfällt.
Der Prozess der Serialisierung ist kontrollierbar, indem das Externalizable Interface statt des Serializable Interface implementiert wird. Dieses Interface erweitert das ursprüngliche Serializable Interface und fügt writeExternal() und readExternal() hinzu. Diese beiden Methoden werden bei der Serialisierung und Deserialisierung des jeweiligen Objekts automatisch aufgerufen, wodurch der gesamte Prozess kontrollierbar wird.
Es gibt einen entscheidenden Unterschied zwischen Serialisierung und Externalisierung: Wenn man ein externalisierbares Objekt serialisiert, wird automatisch ein standardmäßig festgelegter Konstruktor aufgerufen. Erst danach wird die Methode readExternal() aufgerufen. Listing C zeigt eine mögliche Verwendung der Externalisierung.
Listing C
Werden Klassen von einer Klasse übernommen, bei der das Externalizable Interface implementiert ist, muss man die Methoden writeExternal() und readExternal() aufrufen. Das ist notwendig, damit das Objekt korrekt gespeichert und wiederhergestellt werden kann, wenn die betreffende Klasse serialisiert oder deserialisiert wird.
Neueste Kommentare
Noch keine Kommentare zu Wissenswertes zur Serialisierung von Java-Objekten
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.