当一个类 [say A] 被序列化时,所有扩展 A 的子类都将被序列化。假设在类 A 扩展 2000 个类的情况下,序列化对象是否包含所有子类对象。通过覆盖子类中的“private void writeObject”,我们完全消除了父对象的序列化。请确认。
谢谢和问候, Subbu
当一个类 [say A] 被序列化时,所有扩展 A 的子类都将被序列化。假设在类 A 扩展 2000 个类的情况下,序列化对象是否包含所有子类对象。通过覆盖子类中的“private void writeObject”,我们完全消除了父对象的序列化。请确认。
谢谢和问候, Subbu
当一个类 [say A] 被序列化时,所有扩展 A 的子类都将被序列化
不,只要保持序列化的一般合同,类A
及其实例变量就会被序列化。
假设在类 A 扩展 2000 个类的情况下,序列化对象是否包含所有子类对象。
类的序列化表示确实 包含有关其超类型的信息。但不是它的子类。
通过覆盖子类中的“private void writeObject”,我们完全消除了父对象的序列化。请确认。
不,覆盖private void writeObject
不会阻止父对象被序列化。参考Javadoc:
writeObject 方法负责为其特定类写入对象的状态,以便相应的 readObject 方法可以恢复它。该方法不需要关注属于对象的超类或子类的状态。
当一个类 [say A] 被序列化时,所有扩展 A 的子类都将被序列化。
废话。但是,如果类 A 是可序列化的,则其所有派生类都将是可序列化的。
假设在类 A 扩展 2000 个类的情况下,序列化对象是否包含所有子类对象。
更多的废话。然而,任何序列化的结果都包含序列化类及其所有可序列化基类的数据。
通过覆盖子类中的“private void writeObject”,我们完全消除了父对象的序列化。
不。
你读过对象序列化规范吗?都在里面。