-2

当一个类 [say A] 被序列化时,所有扩展 A 的子类都将被序列化。假设在类 A 扩展 2000 个类的情况下,序列化对象是否包含所有子类对象。通过覆盖子类中的“private void writeObject”,我们完全消除了父对象的序列化。请确认。

谢谢和问候, Subbu

4

2 回答 2

6

当一个类 [say A] 被序列化时,所有扩展 A 的子类都将被序列化

不,只要保持序列化的一般合同,类A及其实例变量就会被序列化。

假设在类 A 扩展 2000 个类的情况下,序列化对象是否包含所有子类对象。

类的序列化表示确实 包含有关其超类型的信息。但不是它的子类。

通过覆盖子类中的“private void writeObject”,我们完全消除了父对象的序列化。请确认。

不,覆盖private void writeObject不会阻止父对象被序列化。参考Javadoc

writeObject 方法负责为其特定类写入对象的状态,以便相应的 readObject 方法可以恢复它。该方法不需要关注属于对象的超类或子类的状态。

于 2013-01-18T13:43:09.690 回答
0

当一个类 [say A] 被序列化时,所有扩展 A 的子类都将被序列化。

废话。但是,如果类 A 是可序列化的,则其所有派生类都将是可序列化的。

假设在类 A 扩展 2000 个类的情况下,序列化对象是否包含所有子类对象。

更多的废话。然而,任何序列化的结果都包含序列化类及其所有可序列化类的数据。

通过覆盖子类中的“private void writeObject”,我们完全消除了父对象的序列化。

不。

你读过对象序列化规范吗?都在里面。

于 2013-01-18T23:02:24.460 回答