Hallo,
ich bekomme bei der Serialisierung und Deserialisierung nicht den korrekten Output.
Die Zeile 63 soll die Ausgabe wie Zeile 51 haben.
Bisher bekomme ich jedoch nur die Angaben zu dem Hund. Das alter und der besitzer fehlen.
Wie kann ich diese schreiben und wieder einlesen?
Anbei der Code:
ich bekomme bei der Serialisierung und Deserialisierung nicht den korrekten Output.
Die Zeile 63 soll die Ausgabe wie Zeile 51 haben.
Bisher bekomme ich jedoch nur die Angaben zu dem Hund. Das alter und der besitzer fehlen.
Wie kann ich diese schreiben und wieder einlesen?
Anbei der Code:
Java:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class Lebewesen {
protected int alter;
Lebewesen(){
}
Lebewesen(int alter) {
this.alter = alter;
}
public int getAlter() {
return alter;
}
}
class Mensch extends Lebewesen {
private String vorname;
private String nachname;
Mensch(String vorname, String nachname) {
this.vorname = vorname;
this.nachname = nachname;
}
public String toString() {
return vorname + " " + nachname;
}
}
class Hund extends Lebewesen implements Serializable {
private String name;
private transient Mensch besitzer;
Hund(int alter, String name, Mensch besitzer) {
super(alter);
this.name = name;
this.besitzer = besitzer;
}
public String toString() {
return "Hund: " + name + ", Alter: " + alter + ", Besitzer: " + besitzer;
}
}
public class Test {
public static void main(String[] args) {
Hund h = new Hund(2, "Max", new Mensch("Otto", "Meyer"));
Lebewesen l = new Lebewesen();
System.out.println(h);
try {
FileOutputStream fos = new FileOutputStream("hund.txt");
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(h);
os.writeInt(l.getAlter());
os.close();
FileInputStream fis = new FileInputStream("hund.txt");
ObjectInputStream is = new ObjectInputStream(fis);
Hund h2 = (Hund) is.readObject();
l.alter = is.readInt() ;
is.close();
System.out.println(h2);
} catch (Exception x ) {
System.out.println("Fehler hier");
x.printStackTrace();
}
}
}