在序列化输出中混淆

时间:2016-07-11 06:07:18

标签: java serialization core

有人可以解释给定程序的输出吗?

程序

public class Serial implements Serializable
{
    String name;

    int i;

    public Serial()
    {
        name = "serial";
        System.out.println("Constructor");
    }
}

public class Main
{
    public static void main(String[] args) throws Exception
    {
        Serial s = new Serial();

        FileOutputStream fo = new FileOutputStream("rohit.rohit");
        ObjectOutputStream oo =  new ObjectOutputStream(fo);
        oo.writeObject(s);

        FileInputStream fi = new FileInputStream("rohit.rohit");
        ObjectInputStream oi = new ObjectInputStream(fi);
        Serial se = (Serial) oi.readObject();
        System.out.println(se.name +" "+ se.i);
      }
}

此计划的输出

构造

serial 0

我期待构造函数不会调用。但是这里的构造函数正在调用并且只是初始化值而不打印任何东西。请解释一下。

1 个答案:

答案 0 :(得分:1)

以下行正在调用构造函数,因此您会看到SOP

Serial s = new Serial();