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