Javaで非シリアル化可能オブジェクトをシリアル化するにはどうすればいいですか? 質問する

Javaで非シリアル化可能オブジェクトをシリアル化するにはどうすればいいですか? 質問する

Serializable を実装していないオブジェクトをシリアル化するにはどうすればいいですか? クラスはサードパーティ ライブラリからのものであるため、Serializable としてマークできません。

ベストアンサー1

を実装していないクラスをシリアル化することはできませんSerializableが、 を実装しているクラスでラップすることはできます。これを行うには、ラッパー クラスでreadObjectとを実装しwriteObjectて、そのオブジェクトをカスタムの方法でシリアル化できるようにする必要があります。

  • まず、シリアル化不可能なフィールドを作成しますtransient
  • ではwriteObject、まずdefaultWriteObjectストリームを呼び出してすべての非一時フィールドを格納し、次に他のメソッドを呼び出して非シリアル化可能オブジェクトの個々のプロパティをシリアル化します。
  • ではreadObject、まずdefaultReadObjectストリームを呼び出してすべての非一時フィールドを読み取り、次に他のメソッド ( に追加したメソッドに対応するwriteObject) を呼び出して非シリアル化可能オブジェクトを逆シリアル化します。

これが意味を成すといいのですが。:-)

おすすめ記事