目次 | 前の項目 | 次の項目 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 インタフェースを実装する必要があります。ただし、直列化可能な内部クラスの場合でもいくつかの制限事項があります。その詳細は、「1.10 Serializable インタフェース」を参照してください。
Externalizable クラスは、オプションで次のメソッドを定義できます。

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

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



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