モジュール java.desktop
パッケージ java.beans

クラスDefaultPersistenceDelegate


  • public class DefaultPersistenceDelegate
    extends PersistenceDelegate
    DefaultPersistenceDelegateは、抽象クラスPersistenceDelegateの具象実装であり、情報の得られないクラスがデフォルトで使用する委譲です。 JavaBeans規約に従うクラスは、DefaultPersistenceDelegateにより、特別な構成を行わなくても、バージョンの違いによる影響を受けない公開APIベースの持続性を確保することができます。

    クラスが引数なしのコンストラクタを持っていて、Introspectorから返される順番で設定メソッドと取得メソッドの照合を行うことにより、その状態が正確に示されていることが重要な仮定条件となります。 DefaultPersistenceDelegateは、JavaBeansのコード不要の持続性を提供するほか、引数としてプロパティの値を要求するだけの引数なしでないコンストラクタを持つクラスに持続記憶域をもたらす便利な手段を提供します。

    導入されたバージョン:
    1.4
    関連項目:
    DefaultPersistenceDelegate(String[]), Introspector
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      DefaultPersistenceDelegate()
      引数なしのコンストラクタを持つクラス向けに、持続的な委譲を作成します。
      DefaultPersistenceDelegate​(String[] constructorPropertyNames)
      コンストラクタの引数がconstructorPropertyNamesで指定されたプロパティ名の値であるクラスのために、デフォルトの永続的な委譲を作成します。
    • メソッドのサマリー

      すべてのメソッド インスタンス・メソッド 具象メソッド 
      修飾子と型 メソッド 説明
      protected void initialize​(Class<?> type, Object oldInstance, Object newInstance, Encoder out)
      このinitializeメソッドのデフォルト実装は、この型のオブジェクトで保持されるすべての状態が、Introspectorによって返される「setter」および「getter」メソッド・ペアで公開されていると想定します。
      protected Expression instantiate​(Object oldInstance, Encoder out)
      このinstantiateメソッドのデフォルト実装は、事前定義済みのメソッド名「new」を含む式(DefaultPersistenceDelegateのコンストラクタに指定された引数を使ったコンストラクタの呼出しを示す)を返します。
      protected boolean mutatesTo​(Object oldInstance, Object newInstance)
      指定されたコンストラクタ内の引数の数がゼロ以外で、oldInstanceのクラスがequalsメソッドを明示的に宣言している場合、このメソッドはoldInstance.equals(newInstance)の値を返します。
    • コンストラクタの詳細

      • DefaultPersistenceDelegate

        public DefaultPersistenceDelegate()
        引数なしのコンストラクタを持つクラス向けに、持続的な委譲を作成します。
        関連項目:
        DefaultPersistenceDelegate(java.lang.String[])
      • DefaultPersistenceDelegate

        public DefaultPersistenceDelegate​(String[] constructorPropertyNames)
        コンストラクタの引数がconstructorPropertyNamesで指定されたプロパティ名の値であるクラスのために、デフォルトの永続的な委譲を作成します。 コンストラクタの引数は、プロパティ名を提供される順番で評価することによって作成されます。 このクラスを使って、特定の型を直列化するときに使用する単一の優先コンストラクタを指定するには、コンストラクタの引数を構成するプロパティ名を記述します。 たとえば、引数なしのコンストラクタを定義しないFontクラスは、次の持続的な委譲を使って処理できます。
             new DefaultPersistenceDelegate(new String[]{"name", "style", "size"});
         
        パラメータ:
        constructorPropertyNames - このコンストラクタの引数となるプロパティ名。
        関連項目:
        instantiate(java.lang.Object, java.beans.Encoder)
    • メソッドの詳細

      • mutatesTo

        protected boolean mutatesTo​(Object oldInstance,
                                    Object newInstance)
        指定されたコンストラクタ内の引数の数がゼロ以外で、oldInstanceのクラスがequalsメソッドを明示的に宣言している場合、このメソッドはoldInstance.equals(newInstance)の値を返します。 それ以外の場合、このメソッドは、2つのインスタンスのクラスが等価である場合にtrueを返すスーパー・クラス定義を使用します。
        オーバーライド:
        mutatesTo、クラス: PersistenceDelegate
        パラメータ:
        oldInstance - コピーされるインスタンス。
        newInstance - 変更されるインスタンス。
        戻り値:
        oldInstanceに一連の変更を適用することによって、newInstanceと同等のコピーを作成できる場合はtrue。
        関連項目:
        DefaultPersistenceDelegate(String[])
      • instantiate

        protected Expression instantiate​(Object oldInstance,
                                         Encoder out)
        このinstantiateメソッドのデフォルト実装は、事前定義済みのメソッド名「new」を含む式(DefaultPersistenceDelegateのコンストラクタに指定された引数を使ったコンストラクタの呼出しを示す)を返します。
        定義:
        instantiate、クラス: PersistenceDelegate
        パラメータ:
        oldInstance - インスタンスを生成されるインスタンス。
        out - コード出力ストリーム。
        戻り値:
        値がoldInstanceである式。
        例外:
        NullPointerException - outnullであり、この値がメソッドで使用されている場合
        関連項目:
        DefaultPersistenceDelegate(String[])
      • initialize

        protected void initialize​(Class<?> type,
                                  Object oldInstance,
                                  Object newInstance,
                                  Encoder out)
        このinitializeメソッドのデフォルト実装は、この型のオブジェクトで保持されるすべての状態が、Introspectorによって返される「setter」および「getter」メソッド・ペアで公開されていると想定します。 プロパティ記述子がBoolean.TRUEと等価の値を持つ一時的な属性を定義している場合は、このデフォルトの実装においてそのプロパティを無視します。 ObjectOutputStreamが使用するフィールド修飾子によって、「一時的」という語の使い方がまったく異なる点に注意してください。

        非一時的なプロパティごとに、oldInstanceに引数なしの取得メソッドを適用する式が作成されます。 インスタンスを直列化すると、この式の値がそのプロパティ値になります。 複製された環境で、この式の値によってターゲットの値が変化する場合(mutatesTo)、新しい値は古い値と等価になるように初期化されます。 この場合、プロパティ値は変更されないので、対応する設定メソッドを呼び出す必要はありません。また、文も一切発行されません。 しかし、上記以外の場合、この値の式は別の式(通常はコンストラクタ)で置き換えられ、オブジェクトに新しいプロパティの値をインストールする目的で、対応する設定メソッドが呼び出されます。 このスキームは、この委譲を使って、ストリームの出力からデフォルトの情報を削除します。

        これらの文が実行される出力ストリームに渡される際、newInstanceに対する副作用が発生します。 通常、これは相互に依存する値を持つプロパティの問題です。しかし、このことによって、出力に書き込まなければならない文が少なくなり、直列化処理が容易になるという利点もあります。 一般には、相互依存の関係にあるプロパティを処理する作業の問題は、後続のプロパティの値に依存しないようにクラス内のプロパティの順序を決定する作業の問題になります。

        オーバーライド:
        initialize、クラス: PersistenceDelegate
        パラメータ:
        type - インスタンスの型
        oldInstance - コピーされるインスタンス。
        newInstance - 変更されるインスタンス。
        out - 初期化文が書き込まれるべきストリーム。
        例外:
        NullPointerException - outnullである場合
        関連項目:
        Introspector.getBeanInfo(java.lang.Class<?>), PropertyDescriptor