java 接口 java.io.Serializable

public interface Serializable
實現 java.io.Serializable 接口的類是可序列化的。沒有實現此接口的類將不能使它們的任一狀態被序列化或逆序列化。序列化類的全部子類自己都是可序列化的。這個序列化接口沒有任何方法和域,僅用於標識序列化的語意。
容許非序列化類的子類型序列化,子類型能夠假定負責保存和恢復父類型的公有的、保護的和(若是可訪問)包的域的狀態。只要該類(擴展)有一個無參構造子,可初始化它的狀態,那麼子類型就可承擔上述職責。在這種狀況下申明一個可序列化的類是一個錯誤。此錯誤將在運行時被檢測。
在逆序列化期間,將使用非序列化類的公用的或保護的無參構造子對它的域進行初始化。可序列化子類必須能訪問父類的無參構造子。它的全部域將從相應流中被恢復。
當遍歷一個圖象時,極可能遇到一個不支持序列化接口的對象。此時將拋出 NotSerializableException 異常,且標識該非序列化對象類。
在序列化處理過程當中須要特定句柄的類,必須使用以下這些恰當的標記實現特定的方法:
 private void writeObject(java.io.ObjectOutputStream out)
     throws IOException
 private void readObject(java.io.ObjectInputStream in)
     throws IOException, ClassNotFoundException; 
 
writeObject 方法負責寫特定類的對象的狀態,以致相應的 readObject 方法能恢復它。 經過調用 out.defaultWriteObject 可激活保存對象域的缺省機制。此方法沒必要關心狀態是屬於它的父類仍是子類。 使用 writeObject 方法或基本類型支持的 DataOutput 方法將每一個域的狀態保存到 ObjectOutputStream 中。
readObject 方法負責今後流中讀取並恢復類的域。它可能調用 in.defaultReadObject 方法來調用該對象的非靜態和非暫時的域的缺省恢復機制。 defaultReadObject 方法使用該流中的信息,用當前對象中的已命名域分配保存在流中該對象的相應域。當類已改進增長了新域時,這個接口也作相應處理。此方法沒必要關心狀態是屬於它的父類仍是子類。 使用 writeObject 方法或基本類型支持的 DataOutput 方法將每一個域的狀態保存到 ObjectOutputStream 中。

0javascript

收藏css

ljh0242

444篇文章,275W+人氣,1粉絲

Ctrl+Enter 發佈html

發佈java

取消jquery

掃一掃,領取大禮包linux

0git

分享
ljh0242
相關文章
相關標籤/搜索