如果父类未实现可序列化,则序列化子类


public class Employee2 extends Employee1 {} 
public class Employee1  extends Employee0 {}
public class Employee0  {}

现在我序列化 Employee2 类和

get the error  java.io.NotSerializableException: Employee2

现在,如果将员工 1 类 def 更改为

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

它工作正常,但请注意 Employee0 仍然没有实现可序列化

基类是否必须实现可序列化才能序列化子类?如果是,为什么它只对员工 1 是强制性的,而不是对员工 0 的强制性?

根据

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

如果要序列化Employee2对象,Employee2必须实现Serializable(最好是直接实现而不是继承它(。您没有收到异常Employee1因为它不可序列化,您得到它是因为Employee2不可序列化,并且您无论如何都尝试序列化它。

Employee1Employee0不一定必须实现Serializable,但如果它们不这样做,它们必须具有无参数构造函数(以便序列化器可以实例化重建的Employee2对象(。

最新更新