16.11.2013 Aufrufe

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Programmieren</strong> <strong>in</strong> <strong>Java</strong><br />

><br />

ObjectInput<br />

><br />

public Object readObject() throws ClassNotFoundException, IOException<br />

public <strong>in</strong>t read() throws IOException<br />

// liest e<strong>in</strong> byte aus <strong>de</strong>m datenstrom. Dieses ist –1, wenn das En<strong>de</strong> erreicht ist<br />

public <strong>in</strong>t read(byte b[]) throws IOException<br />

// liest e<strong>in</strong> Array <strong>in</strong> <strong>de</strong>n Puffer. Das En<strong>de</strong> wird durch –1 angezeigt<br />

public <strong>in</strong>t read(byte b[], <strong>in</strong>t off, <strong>in</strong>t laenge) throws IOException<br />

// liest e<strong>in</strong> Array von Bytes <strong>in</strong> <strong>de</strong>n Puffer b an die Stelle off genau len Bytes<br />

public long skip (long n) throws IOException<br />

// überspr<strong>in</strong>gt n Bytes im E<strong>in</strong>gabestrom.<br />

public <strong>in</strong>t available() throws IOException<br />

// Gibt die Anzahl <strong>de</strong>r Zeichen zurück, die ohne Blocka<strong>de</strong> gelesen wer<strong>de</strong>n<br />

public void close() throws IOException<br />

// schließt <strong>de</strong>n E<strong>in</strong>gabestrom<br />

...<br />

Abb.: Das Interface ObjectInput<br />

Das Deserialisieren kann mann sich etwa so vorstellen:<br />

1. Anlegen e<strong>in</strong>en neuen Objekts <strong>de</strong>s zu serialisieren<strong>de</strong>n Typs, Vorbelegen <strong>de</strong>r Membervariablen mit<br />

Defaultwerten, Aufruf <strong>de</strong>s Defaultkonstruktor <strong>de</strong>r ersten nicht serialisierbaren Superklasse.<br />

2. Lesen <strong>de</strong>r serialsierten Daten und Zuweisen <strong>de</strong>r Daten zu <strong>de</strong>n entsprechen<strong>de</strong>n Membervariablen<br />

<strong>de</strong>s angelegten Objekts.<br />

Das durch Deserialisieren erzeugte Objekt hat anschließend dieselbe Struktur und<br />

<strong>de</strong>nselben Zustand, <strong>de</strong>n das serialsierte Objekt hatte 344 . Da <strong>de</strong>r Rückgabewert von<br />

readObject() vom Typ Object ist, muß das erzeugte Objekt <strong>in</strong> <strong>de</strong>n tatsächlichen<br />

Typ (o<strong>de</strong>r e<strong>in</strong>e se<strong>in</strong>er Oberklassen) umgewan<strong>de</strong>lt wer<strong>de</strong>n.<br />

Bsp.: Deserialisieren <strong>de</strong>s im vorherigen Beispiel serialisierten und <strong>in</strong> die Datei<br />

„test1.ser“ geschriebenen Zeit-Objekts.<br />

import java.io.*;<br />

import java.util.*;<br />

public class Pr81101<br />

{<br />

public static void ma<strong>in</strong>(Str<strong>in</strong>g args[])<br />

{<br />

try {<br />

FileInputStream fs = new FileInputStream("test1.ser");<br />

ObjectInputStream is = new ObjectInputStream(fs);<br />

Zeit z = (Zeit) is.readObject();<br />

System.out.pr<strong>in</strong>tln(z.toStr<strong>in</strong>g());<br />

is.close();<br />

}<br />

catch(ClassNotFoundException e)<br />

{ System.err.pr<strong>in</strong>tln(e.toStr<strong>in</strong>g()); }<br />

catch(IOException e)<br />

{ System.err.pr<strong>in</strong>tln(e.toStr<strong>in</strong>g()); }<br />

}<br />

}<br />

344 Abgesehen von <strong>de</strong>n nicht serialsierten Membervariablen <strong>de</strong>s Typs static o<strong>de</strong>r transient.<br />

495

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!