我有2个X和Y级。
public class Z extends Y implements Serializable{
private String a;
// getter and setter
}
public class Y{
private int age;
public Y() {
this.age = 10;
}
}
现在我序列化了这个Y对象。然后反序列化它。
age - 10 // constructor is called here.
a - myname
现在我又采取了另一种情况。
我有2个X,Y和Z.
public class X implements Serializable{
private String s;
public class Y extends X {
private int age;
public Y() {
this.age = 10;
}
}
public class Z extends Y implements Serializable{
private String a;
}
现在,当我反序列化Z对象时,构造函数没有被执行。
它正在打印我在序列化过程中设置的值。
为什么?
答案 0 :(得分:0)
调用最近的非Serializable基类的no-args构造函数。
在第一种情况下,那是Y()。
在第二种情况下,这是X的基类的构造函数,即Object()。