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