Wissenswertes zur Serialisierung von Java-Objekten

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.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Google stopft schwerwiegende Sicherheitslöcher in Chrome 124

Zwei Use-after-free-Bugs stecken in Picture In Picture und der WebGPU-Implementierung Dawn. Betroffen sind Chrome für…

3 Tagen ago

Studie: 91 Prozent der Ransomware-Opfer zahlen Lösegeld

Die durchschnittliche Lösegeldzahlung liegt bei 2,5 Millionen Dollar. Acht Prozent der Befragten zählten 2023 mehr…

3 Tagen ago

DMA: EU stuft auch Apples iPadOS als Gatekeeper ein

Eine neue Analyse der EU-Kommission sieht vor allem eine hohe Verbreitung von iPadOS bei Business-Nutzern.…

3 Tagen ago

Chips bescheren Samsung deutlichen Gewinnzuwachs

Das operative Ergebnis wächst um fast 6 Billionen Won auf 6,64 Billionen Won. Die Gewinne…

3 Tagen ago

Chrome: Google verschiebt das Aus für Drittanbietercookies

Ab Werk blockiert Chrome Cookies von Dritten nun frühestens ab Anfang 2025. Unter anderem gibt…

4 Tagen ago

BAUMLINK: Wir sind Partner und Aussteller bei der Frankfurt Tech Show 2024

Die Vorfreude steigt, denn BAUMLINK wird als Partner und Aussteller bei der Tech Show 2024…

4 Tagen ago