現在、Serializable を実装していないオブジェクトの一部をシリアル化するために XStream を使用しています。オブジェクトが Serializable を実装している場合は Java のデフォルトのシリアライゼーションを使用し、そうでない場合は XML シリアライゼーションにフォールバックするように XStream に指示する方法はありますか? または、チェックするためにその上に単純なレイヤーを実装する必要がありますか?
ありがとう、ジェフ
現在、Serializable を実装していないオブジェクトの一部をシリアル化するために XStream を使用しています。オブジェクトが Serializable を実装している場合は Java のデフォルトのシリアライゼーションを使用し、そうでない場合は XML シリアライゼーションにフォールバックするように XStream に指示する方法はありますか? または、チェックするためにその上に単純なレイヤーを実装する必要がありますか?
ありがとう、ジェフ
これは良い考えではありません。Java シリアライゼーションはバイナリ表現であり、XML はテキスト表現です。
たとえばjava.lang.String
、これは を実装Serializable
しますが、XML 内で文字列をバイナリ BLOB としてシリアル化したくないことは明らかです。数値型などについても同様です。
XStream には、カスタム コンバーターを登録するためのメカニズムがあります。それを使用することをお勧めします。バイナリ データを XML ドキュメントにシリアル化する場合は、Base64 エンコーディングなど、何らかの方法でエンコードする必要があります。