当扩展1000个子类时类的序列化

时间:2013-01-18 13:17:13

标签: java serialization

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

谢谢和问候, Subbu

2 个答案:

答案 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”,我们完全消除了父对象的序列化。

没有

您是否阅读过对象序列规范?它就在那里。