transient
プロパティに単純にラベルを付けてシリアル化を防ぐことができることを考えると、外部化の目的について考えていました。しかし、さらに調査した結果transient
、実行時に何が必要かを判断する必要がある場合、このアプローチ (つまり、 としてラベルを付ける) は理想的ではない可能性があることがわかりました。理論的には、私には理にかなっています。ただし、実際には、Externalization が実行時にどのように使いやすいかはわかりません。つまり、クラスの定義中writeExternal()
および定義中に、何が必要かどうかを決定する必要があります。readExternal()
では、どのように実行時に使いやすいのでしょうか?
これを強調したドキュメントは次のとおりです。
Serializable インターフェースを実装することですべてが自動的に処理される場合、Externalizable インターフェースを実装してわざわざ 2 つのメソッドを定義する必要があるでしょうか? プロセスを完全に制御するだけです。わかりました...これを理解するためにサンプル例を見てみましょう。数百のフィールド (非一時的) を持つオブジェクトがあり、すべてではなく少数のフィールドのみを永続ストレージに格納したいとします。1 つの解決策は、他のすべてのフィールド (シリアル化するフィールドを除く) を一時的として宣言することであり、デフォルトのシリアル化プロセスが自動的にそれを処理します。しかし、これらのいくつかのフィールドが設計時に固定されず、代わりに実行時に条件付きで決定される場合はどうなるでしょうか。このような状況では、Externalizable インターフェイスを実装することがおそらくより良い解決策になるでしょう。