2014-02-27 34 views
2

我已經閱讀SO這些文章:定製可能與序列化然後爲什麼Externalizable?

Externalizable or Serializable?

What is the difference between Serializable and Externalizable in Java?

但我的問題是通過執行Externalizableserializable相比可以得到額外的定製。

它可以自定義一個class我放棄我們自己的執行writeObjectreadObject實現SerializableSerialization。那麼使用Externalizable和定製ReadExternalwriteExternal實現的目的是什麼。使用Externalizable的真正好處是什麼?我已閱讀Externalizable支持自定義serialization(包括上面的一個)的各種鏈接。但我沒有看到一個例子,其中Externalizable是一個明顯的贏家或使用Serializable無法完成的事情。很高興看到這方面的一個例子。

只給更清晰,下面的片段,從here提取:

class實現Serializable interface它給出的信息,這些classesinstances可序列化的JVM。伴隨着的是,有一個特殊的照會JVM

「查找下在實現Serializable接口的類中的兩個方法。如果發現援引與序列化過程中不斷否則直接按照標準的系列化協議」

所以這給了我們一個機會寫這兩種方法:

private void writeObject(ObjectOutputStream out) throws IOException;private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException;

實現SerializableClass內你會得到一個鉤子serialization過程。您可以在這兩種方法中編寫自定義代碼並自定義serialization的標準行爲。

回答

0

Serializable和Externalizable之間的主要區別在於Serializable會自動爲您處理基類。 Externalizable將整個工作留給你。

相關問題