哪些对象参数将被序列化?

时间:2016-05-14 10:55:00

标签: java

1) Class A{   
    string name;
    long Id;
   }
   Class B extends A implements Serializable{
     string dept;
    }
2)Class A  implements Serializable{   
    string name;
    long Id;
   }
   Class B extends A{
     string dept;
    }

任何正文都可以解释,哪些对象参数将被序列化?

2 个答案:

答案 0 :(得分:1)

你没有在这里序列化任何参数,无论如何所有这些变量都可以被序列化,如果你想要一个不被序列化的变量你必须将它声明为transient

答案 1 :(得分:0)

在第一个示例中,dept字段将被序列化,但nameid字段不会。

在第二个示例中,所有三个字段都将被序列化。

Java Object Serialization规范的relevant section说明了这一点:

  

13)对象的内容被写入流中。

     

一个。如果对象是可序列化的,则定位最高的可序列化类。对于该类和每个派生类,将编写该类的字段。

请注意,当反序列化具有非可序列化超类的对象时,将为最低的非可序列化超类调用no-args构造函数。重构对象时,readObject()方法调用no-args构造函数以初始化不可序列化的超类。通常,它无法将超类字段恢复为序列化之前的值。

另见this Q&A