目次 | 前の項目 | 次の項目 Java オブジェクト直列化仕様


2.3 writeObject メソッド

Serializable オブジェクトの場合、writeObject メソッドによって、クラスがそれ自身のフィールドの直列化を制御することができます。そのシグニチャーを次に示します。

    private void writeObject(ObjectOutputStream stream)
        throws IOException;
Serializable オブジェクトの各サブクラスは、自らの writeObject メソッドを定義することができます。クラスにこのメソッドが実装されていなければ、defaultWriteObject によって与えられるデフォルトの直列化が使用されます。実装されている場合は、そのクラスは、そのスーパータイプやサブタイプのフィールドではなく、それ独自のフィールドだけを書き込む責任があります。

クラスの writeObject メソッドは、実装されている場合、そのクラスの状態を保管する責任があります。ObjectOutputStreamdefaultWriteObject メソッドまたは writeFields メソッドを一度 (一度だけ) 呼び出してからでないと、対応する readObject メソッドでそのオブジェクトの状態を復元するために必要になる任意指定のデータを書き込むことはできません。任意指定のデータを書き込まない場合でも、defaultWriteObject または writeFields を一度呼び出す必要があります。任意指定データ (ある場合) の書き込みの前に defaultWriteObjectwriteFields が呼び出されなければ、その writeObject メソッドを定義したクラスを解決できない場合に、インスタンスの直列化復元の動作は未定義になります。

この任意指定データの形式、構造体、バージョン管理の責任のすべては、そのクラスにあります。



目次 | 前の項目 | 次の項目
Copyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.