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.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage