Heilbronn, 08.03.04 1. Serialisierung.doc Seite 1 von 2 Vorgehen zur Serialisierung von Objekten 25.1.04 Quelle: Java Tutorial, trail "Essential Java Classes", Lesson "I/O: Reading and Writing" 1. Öffnen eines Output-Streams zum Abspeichern: FileOutputStream out = new FileOutputStream("theTime"); ObjectOutputStream s = new ObjectOutputStream(out); s.writeObject("Today"); s.writeObject(new Date()); s.flush(); Mögliche Exceptions: bei new FileOutputStream: FileNotFoundException bei new ObjectOutputStream: IOException bei writeObject: NotSerializableException writeObject serialisiert rekursiv auch alle referenzierten Objekte! 2. Alle zu serialisierenden Objekte müssen "Serializable" implementieren ... implements [java.io.]Serializable 3. Öffnen eines Input-Streams zum Einlesen: FileInputStream in = new FileInputStream("theTime"); ObjectInputStream s = new ObjectInputStream(in); String today = (String)s.readObject(); Date date = (Date)s.readObject(); Mögliche Exceptions: bei new FileInputStream: bei new ObjectInputStream: bei readObject: FileNotFoundException IOException ClassNotFoundException Ergebnis bis jetzt: die Spieler werden einmal mit dem Verein VfB serialisiert. Dann noch einmal mit der Spielerliste gespeichert! Frage: sind zwei Kuranyis, die zweimal eingelesen wurden, ein und derselbe? oder zwei gleich Objekte auf unterschiedlichen Adressen? Ja, sie sind es. Also macht mehrfaches Serialisieren eines Objektes nichts aus! Dann braucht man sich vermutlich nicht um ein spezialisiertes Serialisieren kümmern? 4. Spezielles Serialisieren einer Objektklasse: Man kann eine eigene Methode writeObject(ObjectOutputStream s) schreiben. Sie soll so aussehen: private void writeObject(ObjectOutputStream s) throws IOException { s.defaultWriteObject(); // customized serialization code } Prof. Dr.-Ing. Gerald Permantier, Produktion und Software Engineering, Fachhochschule Heilbronn Max-Planck-Str. 39, 74081 Heilbronn ) 07131/504- 251/265 4 07131/25 24 70 - [email protected] Heilbronn, 08.03.2004 1. Serialisierung.doc Seite 2 D.h., man kann ZUSÄTZL ICHE Maßnahmen vorsehen, aber keine Objektverweise von der Serialisierung ausnehmen. Sonst würden diese Verweise ja beim wieder Einlesen fehlen! Also: writeObject nicht zu spezialisieren. Prof. Dr.-Ing. Gerald Permantier, Produktion und Software Engineering, Fachhochschule Heilbronn Max-Planck-Str. 39, 74081 Heilbronn ) 07131/504- 251/265 4 07131/25 24 70 - [email protected]