So funktioniert die Serialisierung, wenn nur Unterklassen serialisierbar implementieren
Nur Unterklasse wurde implementiertSerializable
Schnittstelle.
import java.io.*;
public class NewClass1{
private int i;
NewClass1(){
i=10;
}
int getVal() {
return i;
}
void setVal(int i) {
this.i=i;
}
}
class MyClass extends NewClass1 implements Serializable{
private String s;
private NewClass1 n;
MyClass(String s) {
this.s = s;
setVal(20);
}
public String toString() {
return s + " " + getVal();
}
public static void main(String args[]) {
MyClass m = new MyClass("Serial");
try {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("serial.txt"));
oos.writeObject(m); //writing current state
oos.flush();
oos.close();
System.out.print(m); // display current state object value
} catch (IOException e) {
System.out.print(e);
}
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("serial.txt"));
MyClass o = (MyClass) ois.readObject(); // reading saved object
ois.close();
System.out.print(o); // display saved object state
} catch (Exception e) {
System.out.print(e);
}
}
}
Eine Sache, die mir hier aufgefallen ist, ist, dass die Elternklasse nicht serialisiert ist. Warum hat es dann nicht geworfen?NotSerializableException
in der Tat zeigt es folgendes
Ausgabe
Serial 20
Serial 10
Auch die Ausgabe unterscheidet sich vonSerialization
undDe-serialization
. Ich weiß nur, es ist wegen Elternklasse nicht implementiertSerializable
. Aber wenn mir jemand erklärt, was passiert während der Objekt-Serialisierung und -Deserialisierung? Wie ändert sich der Wert? Ich bin nicht in der Lage, herauszufinden, auch ich habe Kommentar in meinem Programm verwendet. Also, wenn ich mich irgendwann irre, lass es mich bitte wissen.