序列化和反序列化中的类的层次结构

时间:2016-05-23 04:28:01

标签: java serialization deserialization

我有一个类层次结构如下:

public class A implements Serializable {}
public class B extends A {}
public class C implements Serializable extends B {}
public class D extends C {}

我的判断是否正确?

序列化类D时,层次结构中的所有类都被序列化,因为子类是序列化的。

反序列化类D时,不需要默认构造函数,反序列化整个层次结构。

2 个答案:

答案 0 :(得分:3)

你是对的。由于顶级类A实现Serializable,并且类从其超类继承接口,因此所有类都是可序列化的。不需要默认构造函数,因为所有类都可以通过序列化指示它们可以通过从流中读取它们的状态来安全地重构。

答案 1 :(得分:2)

  

在Serialization class D flow中,[is]所有层次结构都是序列化的,因为子类是序列化的。

不,它全部是序列化的,因为 base A Serializable

  

在反序列化类D流中,不需要任何参数构造函数,反序列化所有层次结构。

正确。最近的不可序列化的基类A需要一个no-args构造函数,但在这种情况下它是java.lang.Object,这样做。