當我讀到的關於Thinking in java
的Serializable
接口,有一句話,說:爲什麼在寫入ObjectOutputStream時必須首先調用defaultWriteObject函數?
如果使用默認的機制來寫你的對象的非暫時性的部分,你必須調用defaultWriteObject()作爲writeObject()中的第一個操作,以及readObject()中的第一個操作的defaultReadObject()。
添加的writeObject /方法readObject - 如果版本讀取流具有這些方法,然後調用readObject預計,像往常一樣,讀取由寫入流所需的數據默認序列化。它應該在讀取任何可選數據之前先調用defaultReadObject。 writeObject方法與往常一樣,可以調用defaultWriteObject來寫入所需的數據,然後寫入可選數據。
因此,如果我不先致電defaultWriteObject
,並且如果在該調用之前我寫了其他東西,會不會有任何問題?我已經嘗試過了,但它似乎仍然在我的例子中運行良好。所以如果有什麼問題,在什麼情況下會發生?
它是如此,因爲它是如此。除非你在這裏得到了一位原創設計師,這不太可能,否則你得到的任何東西都會或多或少的不知道猜測。不建設性。 – EJP 2013-04-27 10:49:26