2013-01-18 36 views
-2

當一個類[說A]被序列化時,所有擴展A的子類都將被序列化。假設在類A被2000個類擴展的情況下,序列化對象由所有子類對象組成。通過覆蓋子類中的「private void writeObject」,我們完全消除了父對象被序列化。請確認。當擴展1000個子類時,類的序列化

感謝和問候, Subbu

+5

當您嘗試此操作時發生了什麼?你期望它做什麼? –

+0

爲什麼你想知道這一點 - 請不要告訴我你有一個1000或2000級的深層階級?! – Jesper

+1

1000個小類,請告訴我這是一個誇大的例子 – Scorpion

回答

6

當一個類[發言權A]被序列所有這些延伸的 將被序列

否子類,類A及其實例變量將被序列化,只要保持序列化的一般合同。

假設在A類擴展到2000年的場景的情況下類的序列化對象由所有子類對象組成。

的序列化表示確實contain information about its supertypes。但不是它的子類。

通過覆蓋子類中的「private void writeObject」,我們可以完全消除父對象被序列化。 請確認。

不,重寫private void writeObject不會阻止父對象被序列化。引用Javadoc

writeObject方法是負責寫 對象的狀態針對其特定的類,以使相應的readObject 方法可將其還原。該方法不需要關注屬於該對象的超類或子類的狀態 。

0

當一個類[say A]被序列化時,所有繼承A的子類都將被序列化。

廢話。但是,如果A類是可序列化的所有派生類將是可串行化。

假設在A類擴展2000個類的情況下,序列化對象由所有子類對象組成。

更無意義的。但是,任何序列化的結果都包含序列化類和所有可串行化的類的數據。

通過覆蓋子類中的「private void writeObject」,我們完全消除了父對象被序列化。

你看了對象序列化規範?它都在那裏。