2010-09-29 81 views
4

我有一個簡單的數據結構,它被序列化和反序列化。 反序列化後,我希望數據結構本身進行後續處理步驟。在我們的例子中,它應該簡單地調用它所包含的所有字符串的String.intern()。java - 在自定義反序列化中調用標準反序列化


搶先回答無關的問題:

你爲什麼不只是這樣做後,通常反序列化對象?

  1. 此對象序列化/反序列化在很多地方
  2. 這個數據結構是反序列化較大的物體,其是序列化/的一部分,所以你將不得不瀏覽任何封裝對象反序列化後以及
  3. 使用該框架的其他developpers可能不知道或忘記這一步,並會導致一個巨大的錯誤磁鐵
  4. 這將是醜陋

爲什麼你在使用中的String.intern()第一個地方?

出於性能原因。我們需要做大量的文本處理和計算。


換句話說,在:

public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException; 

有沒有辦法來調用內部的默認/標準反序列化? (所以我們可以加上我們之後的一小步)

謝謝!

阿爾諾

回答

4

是 - in.defaultReadObject()

但你不得不使用readObject(..)沒有readExternal(..

請注意,如果你使用Externalizable,你是你自己。您可以使用Serializable並部分定製輸出。

+0

感謝您的快速回答,我馬上試試! – dagnelies 2010-09-29 10:30:15