我已經閱讀SO
這些文章:定製可能與序列化然後爲什麼Externalizable?
Externalizable or Serializable?,
What is the difference between Serializable and Externalizable in Java?。
但我的問題是通過執行Externalizable
與serializable
相比可以得到額外的定製。
它可以自定義一個class
我放棄我們自己的執行writeObject
和readObject
實現Serializable
的Serialization
。那麼使用Externalizable
和定製ReadExternal
和writeExternal
實現的目的是什麼。使用Externalizable
的真正好處是什麼?我已閱讀Externalizable
支持自定義serialization
(包括上面的一個)的各種鏈接。但我沒有看到一個例子,其中Externalizable
是一個明顯的贏家或使用Serializable
無法完成的事情。很高興看到這方面的一個例子。
只給更清晰,下面的片段,從here提取:
當class
實現Serializable interface
它給出的信息,這些classes
的instances
可序列化的JVM
。伴隨着的是,有一個特殊的照會JVM
「查找下在實現Serializable接口的類中的兩個方法。如果發現援引與序列化過程中不斷否則直接按照標準的系列化協議」
所以這給了我們一個機會寫這兩種方法:
private void writeObject(ObjectOutputStream out) throws IOException;
, private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException;
實現Serializable
和Class
內你會得到一個鉤子serialization
過程。您可以在這兩種方法中編寫自定義代碼並自定義serialization
的標準行爲。