Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么在反序列化时不为父类调用构造函数?_Java_Serialization_Deserialization - Fatal编程技术网

Java 为什么在反序列化时不为父类调用构造函数?

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

我有两个班,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
现在我又接了一个案子

我有两个等级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