目次 | 前の項目 | 次の項目 | Java オブジェクト直列化仕様 |
オブジェクトの直列化を行うと、保管しようとするオブジェクトの JavaTM クラスに関する情報を持つストリームが作成されます。Serializable オブジェクトの場合、そのクラスの異なる(しかし互換性のある)バージョンの実装が存在していても、これらのオブジェクトを復元するのに十分な情報が保持されます。Serializable
インタフェースは、直列化可能プロトコルを実装するクラスを識別するように定義されます。package java.io; public interface Serializable {};Serializable クラスの要件は以下のとおりです。
Serializable クラスは、オプションで次のメソッドを定義できます。
- 保管する情報を制御したり、付加的な情報をストリームに追加する
writeObject
メソッド- 対応する
writeObject
メソッドで書き込まれた情報を読み込むか、またはオブジェクトが復元されたあとにその状態を更新するreadObject
メソッド- ストリームに書き込まれる置換オブジェクトを、クラスが指定できるようにする
writeReplace
メソッド
(詳細は、「2.5 writeReplace メソッド」を参照)
- ストリームから読み込まれたオブジェクトに対して、クラスが置換オブジェクトを指定できるようにする
readResolve
メソッド
(詳細は、「3.6 readResolve メソッド」を参照)
ObjectOutputStream
とObjectInputStream
は、それらが作用する Serializable クラスを展開可能にします。この文脈における展開とは、クラスの前のバージョンと互換性がある変更であれば、それらのクラスに対して行うことができるという意味です。互換性のある変更を可能にする機構については、「5.5 互換性のある JavaTM の型展開」を参照してください。