モジュール java.base
パッケージ java.io

インタフェースExternalizable

  • すべてのスーパー・インタフェース:
    Serializable
    既知のすべてのサブインタフェース:
    RemoteRef, ServerRef
    既知のすべての実装クラス:
    ActivationDataFlavor, DataFlavor, MimeType, MLet, PrivateMLet


    public interface Externalizable
    extends Serializable
    Externalizableインスタンスのクラスのアイデンティティが直列化ストリームに書き込まれるだけで、そのインスタンスの内容を保存および格納するのはクラスの責任です。 クラスは、ExternalizableインタフェースのwriteExternalメソッドとreadExternalメソッドを実装することによって、オブジェクトとそのスーパー・タイプのストリームの形式と内容を十分に制御できるようになります。 これらのメソッドは明示的にスーパー・タイプと連携して、その状態を保存しなければいけません。 これらのメソッドは、writeObjectメソッドとreadObjectメソッドのカスタマイズされた実装よりも優先されます。
    Serializationオブジェクトは、SerializableインタフェースとExternalizableインタフェースを使います。
    オブジェクト持続性のメカニズムも、そうしたインタフェースを使うことができます。 格納される各オブジェクトは、Externalizableインタフェースのためにテストされます。 オブジェクトがExternalizableをサポートする場合、writeExternalメソッドが呼び出されます。 オブジェクトがExternalizableインタフェースをサポートせず、Serializableインタフェースを実装する場合、オブジェクトはObjectOutputStreamを使って保存されます。
    Externalizableオブジェクトが再構築されると、引数なしのpublicコンストラクタを使ってインスタンスが生成され、readExternalメソッドが呼び出されます。
    直列化可能オブジェクトを復元するには、ObjectInputStreamから読み込みます。
    Externalizableのインスタンスは、直列化可能インタフェースに記載されているwriteReplaceメソッドとreadResolveメソッドによって代替オブジェクトを指定できます。
    導入されたバージョン:
    1.1
    関連項目:
    ObjectOutputStreamObjectInputStreamObjectOutputObjectInputSerializable
    • メソッドのサマリー

      すべてのメソッド インスタンス・メソッド 抽象メソッド 
      修飾子と型 メソッド 説明
      void readExternal​(ObjectInput in)
      オブジェクトが実装しているreadExternalメソッドは、DataInputのメソッド(プリミティブ型の場合)およびreadObjectのメソッド(オブジェクト、文字列、配列の場合)を呼び出すことにより、オブジェクトの内容を復元します。
      void writeExternal​(ObjectOutput out)
      オブジェクトが実装しているwriteExternalメソッドは、DataOutputクラスのメソッド(プリミティブ型の場合)およびObjectOutputクラスのwriteObjectメソッド(オブジェクト、文字列、配列の場合)を呼び出して、オブジェクトの内容を保存します。
    • メソッドの詳細

      • writeExternal

        void writeExternal​(ObjectOutput out)
                    throws IOException
        オブジェクトが実装しているwriteExternalメソッドは、DataOutputクラスのメソッド(プリミティブ型の場合)およびObjectOutputクラスのwriteObjectメソッド(オブジェクト、文字列、配列の場合)を呼び出して、オブジェクトの内容を保存します。
        パラメータ:
        out - オブジェクトを書き込むストリーム
        例外:
        IOException - 発生する可能性のあるすべての入出力例外を含む
      • readExternal

        void readExternal​(ObjectInput in)
                   throws IOException,
                          ClassNotFoundException
        オブジェクトが実装しているreadExternalメソッドは、DataInputのメソッド(プリミティブ型の場合)およびreadObjectのメソッド(オブジェクト、文字列、配列の場合)を呼び出すことにより、オブジェクトの内容を復元します。 readExternalメソッドは、writeExternalメソッドで書き込んだときと同じシーケンス、同じ型によって値を読み込まなければいけません。
        パラメータ:
        in - オブジェクトを復元するためのデータ読込み元のストリーム
        例外:
        IOException - 入出力エラーが発生した場合
        ClassNotFoundException - 復元されているオブジェクトのクラスが見つからない場合。