当一个类[说A]被序列化时,所有扩展A的子类都将被序列化。假设在类A被扩展2000个类的情况下,序列化对象包含所有子类对象。通过从子类重写“private void writeObject”,我们完全消除了父对象的序列化。请确认。
谢谢和问候, Subbu
答案 0 :(得分:6)
当一个类[说A]序列化时,所有扩展A的子类 将被序列化
不,只要保持序列化的一般合约,类A
及其 实例变量 将被序列化。
假设在A类扩展2000的情况下 类所做的序列化对象包含所有子类对象。
类的序列化表示 contain information about its supertypes。但不是它的子类。
通过覆盖" private void writeObject"从子类是我们 完全消除父对象被序列化。 请确认。
不,覆盖private void writeObject
不会阻止父对象的序列化。参考Javadoc:
writeObject方法负责写入的状态 对象为其特定的类使对应的readObject 方法可以恢复它。该方法不需要关心 属于对象的超类或子类的状态。
答案 1 :(得分:0)
当一个类[说A]被序列化时,所有扩展A的子类都将被序列化。
无意义。但是,如果A类是 Serializable ,则其所有派生类都将是 Serializable。
假设在类A被扩展2000个类的情况下,序列化对象包含所有子类对象。
更多废话。但是,任何序列化的结果都包含序列化类及其所有可序列化 base 类的数据。
通过从子类重写“private void writeObject”,我们完全消除了父对象的序列化。
没有
您是否阅读过对象序列规范?它就在那里。