2009-06-22 11 views

Antwort

4

Grundsätzlich ist der Unterschied zwischen Serializable und Externalizable ist mit Klassen, was Serializable implementieren, die Serialisierung des Objekts geschieht automatisch, während Klassen, die Umsetzung Externalizable verantwortlich ist selbst für die Serialisierung, ohne die Hilfe von Standardserialisierung Verfahren.

Weitere Informationen finden Sie in der API-Spezifikation für die Schnittstelle Externalizable und die Schnittstelle Serializable. Von der Externalizable Interface-Dokumentation:

Nur die Identität der Klasse eines Externalizable Instanz in die Serialisierung Stream geschrieben und es ist die Verantwortung der Klasse und wiederherstellen, den Inhalt seiner Instanzen zu speichern . Die writeExternal und readExternal Methoden des Externalizable Schnittstelle von einer Klasse implementiert, um die Klasse vollständige Kontrolle über das Format und den Inhalt des Stroms für ein Objekt und dessen Obertyp zu geben.

Der Discover the secrets of the Java Serialization API Artikel hat eine Diskussion über die Externalizable Schnittstelle im "Create Your Own Protokoll: das Externalizable Interface".

3

Ich empfehle den Artikel Understand When to Serialize v. Externalize Objects in Java zu lesen, der die Unterschiede zwischen Serialisierung und Externalisierung beschreibt.

Zunächst ist beschrieben, welche die Serialisierung ist:

Die Serialisierung von Objekten in Java Sie eine Bytefolge von jedem Objekt machen können, die die Serializable Schnittstelle implementiert hat; es auch ermöglicht es Ihnen, diese Byte-Sequenz zurück in ein Objekt zu drehen.

Weiter beschreibt es eine Situation, in der Externalisierung zu Serialisierung vorzuziehen sein könnte:

Es kann vorkommen, dass Sie besondere Anforderungen an die Serialisierung eines Objekts haben. Für Beispiel können Sie einige sicherheitsempfindliche Teile des Objekts haben, wie Passwörter, die Sie nicht behalten und irgendwo übertragen möchten. Oder es kann wertlos sein, ein bestimmtes Objekt mit der Referenz aus dem Hauptobjekt zu speichern, da sein Wert nach der Wiederherstellung wertlos wird.

Sie können den Prozess der Serialisierung steuern, indem Sie die Externalizable-Schnittstelle anstelle von Serializable implementieren. Diese Schnittstelle erweitert die ursprüngliche serialisierbare Schnittstelle und fügt writeExternal() und readExternal() hinzu. Diese beiden Methoden werden automatisch in Ihrem Objekt Serialisierung und Deserialisierung aufgerufen, so dass Sie den gesamten Prozess steuern können.

Ich empfehle den gesamten Artikel zu lesen, da die obigen Auszüge die Details nicht abdecken. Der Artikel enthält auch einige Code-Snippets, die Sie möglicherweise nützlich finden.

+0

defekten Link ...... –

+0

Fixed the link, thanks! –