隨筆-2  評論-0  文章-0  trackbacks-0

          接口 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 中。

          posted on 2006-11-09 12:12 a3mao 閱讀(1070) 評論(0)  編輯  收藏 所屬分類: java

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 东乡县| 双鸭山市| 旬阳县| 郸城县| 莱芜市| 岳西县| 南江县| 邢台县| 东港市| 房山区| 仲巴县| 新化县| 昆山市| 牙克石市| 余姚市| 林口县| 手游| 马龙县| 双流县| 万荣县| 临沧市| 东阳市| 息烽县| 朝阳区| 定远县| 惠水县| 明光市| 修武县| 江北区| 定边县| 安新县| 拜泉县| 濮阳市| 三台县| 西畴县| 阳朔县| 利川市| 西充县| 宜章县| 溆浦县| 新巴尔虎右旗|