/***************************************************************/ /* Prof. Dr. Carsten Vogt */ /* FH Koeln, Fak. 07 / Nachrichtentechnik */ /* http://www.nt.fh-koeln.de/vogt */ /* */ /* Das Programm demonstriert die serialisierte Ein-/Ausgabe */ /* von Objekten */ /***************************************************************/ import java.io.*; public class Serial { public static void main(String args[]) throws IOException, ClassNotFoundException { // Klasse für auszugebende / einzulesende Objekte class Testobjekte implements Serializable { // Attribute String name; int ganzzahl; Testobjekte next; // Verweis auf nächstes Objekt in einer Kette von Objekten // Konstruktor Testobjekte(String name, int ganzzahl) { this.name = name; this.ganzzahl = ganzzahl; this.next = null; } // Bildschirmausgabe des Objekts public void ausgabe(String bezeichnung) { System.out.println(" "+bezeichnung+": "+name+", "+ganzzahl); } } // Eine Kette von drei Objekten erzeugen und initialisieren Testobjekte obj1 = new Testobjekte("Anton",1); obj1.next = new Testobjekte("Berta",2); obj1.next.next = new Testobjekte("Caesar",3); System.out.println(); System.out.println("Erzeugte Objekte:"); obj1.ausgabe("obj1"); obj1.next.ausgabe("obj1.next"); obj1.next.next.ausgabe("obj1.next.next"); // Ausgabestrom / Ausgabedatei erzeugen ObjectOutputStream objOutStr = new ObjectOutputStream(new FileOutputStream("testaus")); // Objekte serialisiert ausgeben System.out.println(); System.out.println("Objekte werden serialisiert in die Datei geschrieben."); objOutStr.writeObject(obj1); // Man beachte: Nicht nur obj1 wird ausgegeben, sondern auch alle Objekte, // auf die obj1 direkt oder indirekt verweist! // Objekte im Programm löschen System.out.println(); System.out.println("Objekte werden geloescht:"); obj1 = null; System.gc(); // Garbage Collection, damit auch wirklich alles weg ist :-) System.out.println(" obj1: "+obj1); // Ab hier: Objekte wieder einlesen // Eingabestrom erzeugen ObjectInputStream objInStr = new ObjectInputStream(new FileInputStream("testaus")); // Objekte serialisiert einlesen System.out.println(); System.out.println("Objekte werden serialisiert aus der Datei eingelesen."); obj1 = (Testobjekte)objInStr.readObject(); // Man beachte: Nicht nur obj1 wird eingelesen, sondern auch alle Objekte, // auf die obj1 seinerzeit direkt oder indirekt verwiesen hatte. System.out.println(); System.out.println("Eingelesene Objekte:"); obj1.ausgabe("obj1"); obj1.next.ausgabe("obj1.next"); obj1.next.next.ausgabe("obj1.next.next"); } }