Castor を使用して Java オブジェクトをマーシャリング/アンマーシャリングしていますが、そのうちの 1 つに EnumMap が含まれています。Castor は EnumMaps をマーシャリング/アンマーシャリングできますか? いくつかのネストされた HashMap を含むマッピング ファイルがありますが、Castor を介して EnumMap をプッシュしたことはありません。可能であれば、マッピング ファイルを介してどのように行われますか?
質問する
1210 次
1 に答える
2
大きな問題の 1 つは、少なくとも Java 1.5 では、Enum を実際にシリアライズおよび復元できないことです。また、Java 1.6 にもないと思います。
列挙型はデフォルトでシリアライズまたは XMLEncoded できないため、EnumMap をシリアライズできるとはとても思えません。キャスターのウェブページから:
タイプ セーフな列挙型クラスを処理するために独自のカスタム FieldHandler をいつでも使用できますが、Castor にはこれらのタイプのクラスを処理する組み込みのアプローチがあります。タイプ セーフな列挙型クラスに public static valueOf(String) メソッドがある場合、Castor はそのメソッドを呼び出して、列挙型の適切なインスタンスが返されるようにします。注: また、マッピング ファイルでデフォルトのコンストラクタ チェックを無効にする必要があります (詳細については、上記のセクション 7.4 を参照してください)。
それが機能しない場合は、独自のフィールド ハンドラを作成する必要があります。
これが少し役立つことを願っています。
于 2009-05-22T12:28:01.493 に答える