Java 为什么在反序列化时不为父类调用构造函数?
我有两个班,X班和Y班Java 为什么在反序列化时不为父类调用构造函数?,java,serialization,deserialization,Java,Serialization,Deserialization,我有两个班,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 ca
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
现在我又接了一个案子
我有两个等级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对象时,构造函数没有被执行
它正在打印我在序列化过程中设置的值
这是为什么?调用最近的不可序列化基类的无参数构造函数 在第一种情况下,这是Y()
在第二种情况下,这是X基类的构造函数,它是Object()。@AnkurShanbhag我看不出这是一个重复的问题。在这个问题上,作者已经知道这个问题的答案了。你一定是在开玩笑。请参阅对象序列化规范。答案为+1。。不知道为什么被否决了。。。只想补充一点,在后面的op问题中,
Y
的父构造函数没有被调用,因为Y
本身是可序列化的,因为它扩展了一个可序列化的类X