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


1.6 クラスの直列化可能なフィールドおよびデータの文書化

クラスの直列化状態を文書化して Serializable クラスのほかの実装と相互運用可能にすること、およびクラスの展開を文書化することは重要です。直列化可能フィールドが文書化されていれば、そのフィールドが直列化可能かどうかを最終的に確認することができます。ソースコード内の Serializable クラスの直列化形式を文書化する 1 つの方法は、javadoc の直列化タグ @serial@serialField、および @serialData を使うことです。

javadoc アプリケーションは、javadoc の直列化タグを認識し、各 Serializable クラスおよび Externalizable クラスの仕様を生成します。これらのタグを使った例については、「C.1 java.io.File 代替実装の例」を参照してください。

クラスを Serializable として宣言した場合、オブジェクトの直列化可能状態は、直列化可能フィールド (名前と型による) に加え、任意指定のデータによって定義されます。任意指定のデータは、Serializable クラスの writeObject メソッドによってのみ書き込まれます。任意指定のデータは、Serializable クラスの readObject によって読み込まれるか、または直列化では読み込まれずにスキップされます。

クラスを Externalizable として宣言した場合、クラス自体によってストリームに書き込まれたデータが直列化状態を定義します。クラスは、ストリームに書き込まれる各データの順番、型、および意味を指定する必要があります。クラスは、以前のバージョンで書き込まれたデータを引き続き読み込めるようにし、以前のバージョンで読み込まれたデータを書き込めるようにするために、自らの展開を処理する必要があります。クラスは、データの保存および復元時には、スーパークラスと協調動作しなければなりません。ストリーム内のスーパークラスのデータ位置を指定する必要があります。

直列化可能クラスの設計者は、そのクラスに保存される情報が持続性に適し、直列化特有の展開および相互運用性の規則に従っていることを保証する必要があります。クラスの展開の詳細については、第 5 章「直列化可能オブジェクトのバージョン管理」を参照してください。



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