Как работает сериализация, когда только подкласс реализует сериализуемый
Только подкласс реализовалSerializable
интерфейс.
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);
}
}
}
Одна вещь, которую я здесь заметил, это то, что родительский класс не сериализован. Тогда почему нет это броситьNotSerializableException
на самом деле это показывает следующее
Выход
Serial 20
Serial 10
Кроме того, выход отличается отSerialization
а такжеDe-serialization
, Я только знаю, что это потому, что родительский класс не реализованSerializable
, Но, если кто-нибудь объяснит мне, что происходит во время сериализации и десериализации объекта. Как это меняет значение? Я'Я не могу понять, также я использовал комментарий в моей программе. Так что, если яЯ ошибаюсь, пожалуйста, дайте мне знать.