0

シリアライゼーション プロキシパターンについて調べています。基本的には、シリアライズしたいエンクロージングクラスの静的ネストされたクラスとして宣言する必要があるプロキシクラスを持つことを意味します。したがって、基本的な考え方は、プロキシが含まれているシリアライズ可能なクラスをシリアライゼーションの危険から保護することです。

ただし、実装は実際には明確ではありません。writeReplace()外部クラスとreadResolve()プロキシ クラスでを呼び出すのはなぜですか? プロキシ クラスは外部クラスの静的メンバーのようなものなので、どのようにシリアライズされるのでしょうか? シリアライズされない場合、デシリアライズ中にプロキシで readResolve() がどのように呼び出されるのでしょうか?

ここで基本的なものが欠けていると確信しています。誰かが光を当てることができますか?

4

1 に答える 1

2

のドキュメントを確認してくださいSerializable

writeReplace()およびreadResolve()は、シリアル化エンジンによって呼び出される特別なメソッドです。

writeReplace()シリアライズされているオブジェクトをプロキシにreadResolve()置き換え、デシリアライズされたプロキシを実際のオブジェクトに置き換えます。

シリアル化プロキシ クラスは、シリアル化するクラスの静的なネストされたクラスである必要はありません。これは、コードの編成を改善するための規則にすぎません。

于 2013-09-09T08:53:30.053 に答える