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?
根据我的例子,它看起来像是,但根据网上的其他文章,这不应该是强制性的。那么我在这里缺少什么?
答案 0 :(得分:5)
如果要序列化Employee2
对象,Employee2
必须实现Serializable
(最好是直接而不是继承它)。你没有得到例外,因为Employee1
不可序列化,你得到它是因为Employee2
不是,并且你还是试图序列化它。
Employee1
和Employee0
并非必须实施Serializable
,但如果他们不这样做,他们必须拥有无参数构造函数(以便序列化程序可以实例化重建的Employee2
对象。