Seit der JDK 1.1 gibt es die Möglichkeit Objekte mit der Klasse ObjectOutputStream zu Serialisieren. Dem Konstruktor dieser Klasse muss ein OutputStream übergeben werden.
Diese Klasse besitzt Methoden zur Serialisierung von primitiven Typen und die Me¬tho¬de writeObject zum Serialisieren eines kompletten Objekts.
public final void writeObject(Object obj) java.io.ObjectOutputStream
public void writeBoolean(boolean data)
public void writeByte(int data)
public void writeShort(int data)
public void writeChar(int data)
public void writeInt(int data)
public void writeLong(long data)
public void writeFloat(float data)
public void writeDouble(double data)
public void writeBytes(String data)
public void writeChars(String data)
public void writeUTF(String data)
Alle diese Methoden können eine IOException zurückliefern.
2.1) Serialisieren von Objekten:
Damit man ein Objekt serialisieren kann, muss es das Interface Serializable implementieren. Dieses Interface definiert zwar keine Methoden, aber es muss implementiert werden sonst wird von writeObject eine Ausnahme des Typs NotSerializableException ausgelöst.
Die verwendete Methode writeObject schreibt folgende Informationen in den OutputStream:
. Die Klasse des zu serialisierenden Objekts
. Die Signatur der Klasse
. Alle Membervariablen des Objekts inklusive aller geerbten Attribute ausgenommen:
statische Attribute: Da diese nicht zum Objekt sondern zur Klasse des Objekts gehören.
transiente Attribute: Mit Hilfe des Schlüsselworts transient kann man Attribute defi¬nie¬ren die nicht serialisiert werden sollen oder dürfen. Genauere Informationen siehe Punkt 4.2.
Problematisch beim Serialisieren von Objekten sind vor allem zwei Dinge:
. Es muß zur Laufzeit ermittelt werden welche Membervariablen ein Objekt besitzt und welche serialisiert werden müssen.
. Eine Membervariable kann ein Objekt sein, welches dann auch serialisiert werden muss. writeObject muss hierbei mit zyklischen Verweisen umgehen können und die Objekt¬referenzen müssen erhalten bleiben.
|