DefaultPersistenceDelegate
は、抽象クラスPersistenceDelegate
の具象実装であり、情報の得られないクラスがデフォルトで使用する委譲です。 DefaultPersistenceDelegate
では、クラス固有の構成を行わずにJavaBeans規則に従ったクラスに対して、バージョン回復可能なパブリックAPIベースの永続性が提供されます。
クラスが引数なしのコンストラクタを持っていて、Introspectorから返される順番で設定メソッドと取得メソッドの照合を行うことにより、その状態が正確に示されていることが重要な仮定条件となります。 DefaultPersistenceDelegate
は、JavaBeansのコード不要の持続性を提供するほか、引数としてプロパティの値を要求するだけの引数なしでないコンストラクタを持つクラスに持続記憶域をもたらす便利な手段を提供します。
- 導入されたバージョン:
- 1.4
- 関連項目:
DefaultPersistenceDelegate(String[])
,Introspector
-
コンストラクタのサマリー
コンストラクタコンストラクタ説明引数なしのコンストラクタを持つクラス向けに、持続的な委譲を作成します。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
指定されたコンストラクタ内の引数の数がゼロ以外で、oldInstance
のクラスがequalsメソッドを明示的に宣言している場合、このメソッドはoldInstance.equals(newInstance)
の値を返します。クラス java.beans.PersistenceDelegateで宣言されたメソッド
writeObject
-
コンストラクタの詳細
-
DefaultPersistenceDelegate
public DefaultPersistenceDelegate()引数なしのコンストラクタを持つクラス向けに、持続的な委譲を作成します。 -
DefaultPersistenceDelegate
public DefaultPersistenceDelegate(String[] constructorPropertyNames)コンストラクタの引数がconstructorPropertyNames
で指定されたプロパティ名の値であるクラスのために、デフォルトの永続的な委譲を作成します。 コンストラクタの引数は、プロパティ名を提供される順番で評価することによって作成されます。 このクラスを使って、特定の型を直列化するときに使用する単一の優先コンストラクタを指定するには、コンストラクタの引数を構成するプロパティ名を記述します。 たとえば、引数なしのコンストラクタを定義しないFont
クラスは、次の持続的な委譲を使って処理できます。new DefaultPersistenceDelegate(new String[]{"name", "style", "size"});
- パラメータ:
constructorPropertyNames
- このコンストラクタの引数となるプロパティ名。- 関連項目:
instantiate(java.lang.Object, java.beans.Encoder)
-
-
メソッドの詳細
-
mutatesTo
指定されたコンストラクタ内の引数の数がゼロ以外で、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
-out
がnull
であり、この値がメソッドで使用されている場合- 関連項目:
DefaultPersistenceDelegate(String[])
-
initialize
このinitialize
メソッドのデフォルト実装は、この型のオブジェクトで保持されるすべての状態が、Introspectorによって返される「setter」および「getter」メソッド・ペアで公開されていると想定します。 プロパティ記述子がBoolean.TRUE
と等価の値を持つ一時的な属性を定義している場合は、このデフォルトの実装においてそのプロパティを無視します。ObjectOutputStream
が使用するフィールド修飾子によって、「一時的」という語の使い方がまったく異なる点に注意してください。非一時的なプロパティごとに、
oldInstance
に引数なしの取得メソッドを適用する式が作成されます。 インスタンスを直列化すると、この式の値がそのプロパティ値になります。 複製された環境で、この式の値によってターゲットの値が変化する場合(mutatesTo
)、新しい値は古い値と等価になるように初期化されます。 この場合、プロパティ値は変更されないので、対応する設定メソッドを呼び出す必要はありません。また、文も一切発行されません。 しかし、上記以外の場合、この値の式は別の式(通常はコンストラクタ)で置き換えられ、オブジェクトに新しいプロパティの値をインストールする目的で、対応する設定メソッドが呼び出されます。 このスキームは、この委譲を使って、ストリームの出力からデフォルトの情報を削除します。これらの文が実行される出力ストリームに渡される際、
newInstance
に対する副作用が発生します。 通常、これは相互に依存する値を持つプロパティの問題です。しかし、このことによって、出力に書き込まなければならない文が少なくなり、直列化処理が容易になるという利点もあります。 一般には、相互依存の関係にあるプロパティを処理する作業の問題は、後続のプロパティの値に依存しないようにクラス内のプロパティの順序を決定する作業の問題になります。- オーバーライド:
initialize
、クラス:PersistenceDelegate
- パラメータ:
type
- インスタンスの型oldInstance
- コピーされるインスタンス。newInstance
- 変更されるインスタンス。out
- 初期化文が書き込まれるべきストリーム。- 例外:
NullPointerException
-out
がnull
である場合- 関連項目:
Introspector.getBeanInfo(java.lang.Class<?>)
,PropertyDescriptor
-