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

时间:2014-03-20 11:30:02

标签: java serialization deserialization

我有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对象时,构造函数没有被执行。

它正在打印我在序列化过程中设置的值。

为什么?

1 个答案:

答案 0 :(得分:0)

调用最近的非Serializable基类的no-args构造函数。

在第一种情况下,那是Y()。

在第二种情况下,这是X的基类的构造函数,即Object()。