Wie die Serialisierung funktioniert, wenn nur Unterklasse implementiert serializable

Nur Unterklasse implementiert hat Serializable - 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 ich bemerkt, hier ist die übergeordnete Klasse nicht serialisiert. Dann, warum hat er dann nicht werfen NotSerializableException es tatsächlich ist, zeigen folgende

Ausgabe

Serial 20
Serial 10

Ebenfalls, Ausgabe unterscheiden sich von Serialization und De-serialization. Ich einfach nur wissen, es ist, weil der parent-Klasse nicht implementiert hat Serializable. Aber, Wenn jemand mir erklären, was passiert, während der Objekt-Serialisierung und de-Serialisierung. Wie verändert es den Wert ? Ich bin nicht in der Lage, herauszufinden, auch die, die ich verwendet haben, Kommentar in meinem Programm. Also, wenn ich falsch bin, an jedem Punkt, lassen Sie es mich bitte wissen.

InformationsquelleAutor der Frage Ravi | 2012-12-26

Schreibe einen Kommentar