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

クラスPersistenceDelegate

java.lang.Object
java.beans.PersistenceDelegate
直系の既知のサブクラス:
DefaultPersistenceDelegate

public abstract class PersistenceDelegate extends Object
PersistenceDelegateクラスは、クラスの公開APIに含まれるメソッドによって、指定されたクラスのインスタンスの状態を表現します。 たとえば、この委譲モデルを採用しているXMLEncoderなどのストリームは、これまでのように持続性とクラス自体を関連付ける代わりに、ObjectOutputStreamで使用されるreadObjectメソッドとwriteObjectメソッドにより、その動作をクラスから切り離して管理することができます。 通常、クラスは、この委譲スキームを使ってこうした情報や規約を簡単に表現するのに最適の場所です。 しかし、たった1つのクラスに些細な問題が含まれているだけで、オブジェクト・グラフ全体の書込みができなくなる場合もあります。この場合、アプリケーション開発者は、問題の発生しているクラスのシャドウをローカルで独自に作成するか、持続性を維持するためのその他の手法を採ることになります。 こうした状況でこの委譲モデルを利用すれば、アプリケーション開発者は、アプリケーション自体には含まれないクラスの実装に変更を加えることなく、比較的クリーンな方法で直列化処理のあらゆる局面を制御することができます。

この持続スキームは、委譲モデルを使用するという点だけでなく、対応するreadObjectメソッドなしでwriteObjectメソッドのアナログを要求するという点でも、従来の直列化スキームとは異なっています。 writeObjectメソッドのアナログは、公開APIを使って個々のインスタンスをエンコードします。直列化された形式の読込み手続きは、『Java言語仕様』に記されているとおり、メソッド呼出しのセマンティックスによって定義されているため、readObjectメソッドのアナログを定義する必要はありません。 この手法で作成されたアーカイブが参照先クラスの非公開実装の変更の影響を受けないようにするには、バージョンごとに変化すると思われるwriteObjectreadObjectの実装の依存関係を除去する必要があります。

次のように、持続的な委譲は、オブジェクトの持続性に関するあらゆる局面を制御します。

  • あるインスタンスを同じクラス内の別のインスタンスに変更できるかどうかを判断。
  • 公開コンストラクタまたは公開ファクトリ・メソッドの呼出しにより、オブジェクトのインスタンスを作成。
  • オブジェクトの初期化を実行。

導入されたバージョン:
1.4
関連項目: