簡體   English   中英

防止父類Java的序列化

[英]Prevent Serialization of parent class Java

有什么方法可以防止父類被序列化嗎?

當我們一直對子類進行序列化直到父類進行序列化時。

我可以限制父類的序列化並序列化我正在處理的唯一子類嗎?

可能 只需將您的類聲明為implements Externalizable並在writeExternal()方法中准確編寫所需的內容,注意不要對超類中的任何內容進行序列化,並在readExternal()方法中准確地讀回該內容。

或者,只需實現Serializable並提供您自己的readObject()/writeObject()方法,再次注意不要序列化超類中的任何內容,在這種情況下,請不要調用defaultWriteObject()defaultReadObject()

在這兩種情況下,當前類數據的實際序列化完全取決於您。

盡管從技術上講可以單獨微調每個繼承級別,甚至可以排除超類字段,但您可能想回到這里。

基本上有兩種情況:

  1. 超類沒有任何字段/狀態。 那么您無論如何都沒有要排除的東西。
  2. 超級類具有狀態,由該類的字段表示。

那么您認為如何有意義地解決第二部分? 您會看到何時允許反序列化而沒有超類字段的數據-這意味着您可能必須進行許多其他測試。 為了確保超類方法不會引發異常-因為所有突然的字段都為空而不是被初始化。

換句話說:有可能“遺漏”所有這些值-您正在創建行為完全不同的對象。 您准備好處理所有這些影響了嗎?

意思是:跳過超類字段需要您干擾序列化代碼。 這可能需要大量額外的測試工作。 你會得到什么? 運行時的數據傳輸少了幾個字節。

除此之外:具有4個級別的intent層次結構的目的是什么-但是超類狀態無關緊要?

因此,我的無答案:請仔細考慮您的想法是否真的是解決基礎需求的最佳OO設計。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM