public class DefaultPersistenceDelegate extends PersistenceDelegate
DefaultPersistenceDelegateは、抽象クラス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)の値を返します。 |
writeObjectpublic 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、クラスPersistenceDelegateoldInstance - コピーされるインスタンス。newInstance - 変更されるインスタンス。oldInstanceに一連の変更を適用することによって、newInstanceと同等のコピーを作成できる場合はtrue。DefaultPersistenceDelegate(String[])protected Expression instantiate(Object oldInstance, Encoder out)
instantiateメソッドのデフォルト実装は、事前定義済みのメソッド名「new」を含む式(DefaultPersistenceDelegateのコンストラクタに指定された引数を使ったコンストラクタの呼出しを示す)を返します。instantiate、クラスPersistenceDelegateoldInstance - インスタンスを生成されるインスタンス。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、クラスPersistenceDelegatetype - インスタンスの型oldInstance - コピーされるインスタンス。newInstance - 変更されるインスタンス。out - 初期化文が書き込まれるべきストリーム。NullPointerException - outがnullである場合Introspector.getBeanInfo(java.lang.Class<?>), PropertyDescriptor バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。