readObject() と writeObject() をオーバーライドすることで、シリアル化をカスタマイズできることを理解しています。しかし、これを行う必要があるのは何でしょうか? ユースケース?
また、Externalizable インターフェイスも、カスタムのシリアル化を提供する方法にすぎませんか、それとも他の目的に役立ちますか?
readObject() と writeObject() をオーバーライドすることで、シリアル化をカスタマイズできることを理解しています。しかし、これを行う必要があるのは何でしょうか? ユースケース?
また、Externalizable インターフェイスも、カスタムのシリアル化を提供する方法にすぎませんか、それとも他の目的に役立ちますか?
私の頭の上からのユースケース:
Externalizable の javadoc は、それが何のために使用されるかを説明しています。
実践からのよく知られた例: HashMap
. 複雑な内部構造がたくさんありますが、API はかなり単純で、カスタマイズ パラメーターも含まれています。デフォルトのシリアライゼーションを使用した場合、かなりの量の冗長な情報 (空のバケット、バケットの空の部分、配列へのすべてのインデックスなど) をシリアライズする必要があります。
代わりにHashMap
、相手側でデータを再構築するために必要なすべてのデータのみを転送する単純で単純なシリアル化された形式を定義します。