Serializable を実装していないオブジェクトをシリアル化するにはどうすればいいですか? クラスはサードパーティ ライブラリからのものであるため、Serializable としてマークできません。
ベストアンサー1
を実装していないクラスをシリアル化することはできませんSerializable
が、 を実装しているクラスでラップすることはできます。これを行うには、ラッパー クラスでreadObject
とを実装しwriteObject
て、そのオブジェクトをカスタムの方法でシリアル化できるようにする必要があります。
- まず、シリアル化不可能なフィールドを作成します
transient
。 - では
writeObject
、まずdefaultWriteObject
ストリームを呼び出してすべての非一時フィールドを格納し、次に他のメソッドを呼び出して非シリアル化可能オブジェクトの個々のプロパティをシリアル化します。 - では
readObject
、まずdefaultReadObject
ストリームを呼び出してすべての非一時フィールドを読み取り、次に他のメソッド ( に追加したメソッドに対応するwriteObject
) を呼び出して非シリアル化可能オブジェクトを逆シリアル化します。
これが意味を成すといいのですが。:-)