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


1.11 Externalizable インタフェース

Externalizable オブジェクトの場合、そのオブジェクトのクラスを識別する情報だけがコンテナによって保管されます。クラスは、その内容を保管し復元する必要があります。Externalizable インタフェースは、次のように定義されます。

package java.io;

public interface Externalizable extends Serializable
{
    public void writeExternal(ObjectOutput out)
        throws IOException;

    public void readExternal(ObjectInput in)
        throws IOException, java.lang.ClassNotFoundException;
}
Externalizable オブジェクトのクラスの要件は、以下のとおりです。

(Externalizable オブジェクトは、その状態を保存するために、そのスーパータイプと明示的に調整しなければならない)

(Externalizable オブジェクトは、その状態を保存するために、そのスーパータイプと明示的に調整しなければならない)


注 - writeExternalreadExternal のメソッドは public であるため、クライアントが、オブジェクトのメソッドとフィールドを使わずにオブジェクトの情報を書き込んだり、読み込んだりできる危険性があります。これらのメソッドを使うのは、オブジェクトで表す情報が機密に属するものでないときや、書き込みや読み込みがあっても機密保護を妨害する可能性のない場合だけにしなければなりません。

注 - 暗黙的に、すべての内部クラスのコンストラクタは囲むインスタンスを付加されたパラメータとしてとるため、内部クラスには引数なしのコンストラクタはありません。したがって、Externalizable インタフェース機構は内部クラスに使うことはできず、内部クラスを直列化する必要がある場合には、Serializable インタフェースを実装する必要があります。
Externalizable クラスは、オプションで次のメソッドを定義できます。

(詳細は「2.5 writeReplace メソッド」を参照)

(詳細は「3.6 readResolve メソッド」を参照)



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