目次 | 前の項目 | 次の項目 | Java オブジェクト直列化仕様 |
Serializable オブジェクトの場合、writeObject
メソッドによって、クラスがそれ自身のフィールドの直列化を制御することができます。そのシグニチャーを次に示します。private void writeObject(ObjectOutputStream stream) throws IOException;Serializable オブジェクトの各サブクラスは、自らのwriteObject
メソッドを定義することができます。クラスにこのメソッドが実装されていなければ、defaultWriteObject
によって与えられるデフォルトの直列化が使用されます。実装されている場合は、そのクラスは、そのスーパータイプやサブタイプのフィールドではなく、それ独自のフィールドだけを書き込む責任があります。クラスの
writeObject
メソッドは、実装されている場合、そのクラスの状態を保管する責任があります。ObjectOutputStream
のdefaultWriteObject
メソッドまたはwriteFields
メソッドを一度 (一度だけ) 呼び出してからでないと、対応するreadObject
メソッドでそのオブジェクトの状態を復元するために必要になる任意指定のデータを書き込むことはできません。任意指定のデータを書き込まない場合でも、defaultWriteObject
またはwriteFields
を一度呼び出す必要があります。任意指定データ (ある場合) の書き込みの前にdefaultWriteObject
かwriteFields
が呼び出されなければ、そのwriteObject
メソッドを定義したクラスを解決できない場合に、インスタンスの直列化復元の動作は未定義になります。この任意指定データの形式、構造体、バージョン管理の責任のすべては、そのクラスにあります。