1

コンパレーターを使用して TreeMap をシリアル化することは可能ですか??

私はテストしましたが、コンパレーターなしでツリーマップを適切にシリアル化します。コンパレーターを追加すると、例外がスローされます。

コンパレータを一時的として宣言しても、まだ機能しません。すべてのツリーマップを一時的にする場合にのみ機能しますが、その場合はツリーをシリアル化しません。

4

5 に答える 5

8

シリアル化しようとするすべてのクラスは、java.io.Serializableインターフェイスを実装する必要があります。また、クラスの各メンバー変数はSerializable. 実際、階層全体がそうあるべきです。

于 2009-12-06T20:15:36.080 に答える
0

ここでは、TreeMap は特別なことは何もしていません。シリアル化する TreeMap とシリアル化しない TreeMap の唯一の違いがコンパレーターである場合、コンパレーターはシリアル化できません。

コンパレータをどのように実装していますか?一時的な宣言は、一時的な参照を持たない TreeMap クラスには意味がありません。

例外は何と言っていますか?

于 2009-12-07T00:30:22.930 に答える
0

詳細については、こちらをご覧ください。その他の考慮事項 (このドキュメントおよび他の場所で説明されているように):

  • バージョン管理
  • オブジェクトのカスタム シリアル フォーム
  • オブジェクトのどのフィールドをシリアル化する必要があり、どれが一時的なものか
于 2009-12-06T20:21:27.387 に答える
-1

Comparator フィールドをインスタンス メンバーではなく静的に変更するのと同じくらい簡単であることがわかるかもしれません。

public final static Comparator<String> ID_IGN_CASE_COMP

他のすべてのフィールドがシリアライズ可能であることを確認する必要がありますが、これが出発点です。

于 2009-12-06T20:56:32.427 に答える