如果父类没有实现可序列化,则序列化子类?

时间:2013-12-09 16:35:35

标签: java serialization

public class Employee2 extends Employee1 {} 

public class Employee1  extends Employee0 {}

public class Employee0  {}

现在我序列化Employee2类和

get the error  java.io.NotSerializableException: Employee2

现在如果将Employee1类更改为

public class Employee1  extends Employee0 implements java.io.Serializable {}

它工作正常,但请注意Employee0仍然没有实现Serializable

Base类必须实现Serializable来序列化子类吗?如果是,为什么它只强制用于Employee1而不用于Employee0?

根据我的例子,它看起来像是,但根据网上的其他文章,这不应该是强制性的。那么我在这里缺少什么?

1 个答案:

答案 0 :(得分:5)

如果要序列化Employee2对象,Employee2必须实现Serializable(最好是直接而不是继承它)。你没有得到例外,因为Employee1不可序列化,你得到它是因为Employee2不是,并且你还是试图序列化它。

Employee1Employee0并非必须实施Serializable,但如果他们不这样做,他们必须拥有无参数构造函数(以便序列化程序可以实例化重建的Employee2对象。