Возможно ли, чтобы Кастор-маршал / демаршал EnumMap? - PullRequest
2 голосов
/ 13 марта 2009

Я использую Castor для маршалирования / демаршализации моих Java-объектов, один из которых содержит EnumMap. Может ли Кастор маршал / демаршал EnumMaps? У меня есть файл сопоставления с некоторыми вложенными HashMaps, но я никогда не проталкивал EnumMap через Castor. Если это возможно, как это делается с помощью файла сопоставления?

1 Ответ

2 голосов
/ 22 мая 2009

Одна из больших проблем заключается в том, что Enums не может быть сериализован и восстановлен, по крайней мере, в Java 1.5. И я думаю также не в Java 1.6.

Поскольку перечисления по умолчанию не могут быть сериализованы или кодированы XMLE, я очень сомневаюсь, что EnumMap может быть сериализован. Со страницы рицинуса :

Хотя вы всегда можете использовать свой собственный пользовательский FieldHandler для обработки безопасные по типу перечислимые классы, Castor имеет встроенный подход к иметь дело с этими типами классов. Если у перечисляемого класса есть тип public static valueOf (String) метод Кастор вызовет этот метод так что надлежащий экземпляр Перечисление возвращается. Примечание: вы будете также необходимо отключить по умолчанию проверка конструктора в файле сопоставления (см. раздел 7.4 выше, чтобы узнать больше о это).

если это не сработает, вы должны написать свой собственный обработчик поля .

Надеюсь, это немного поможет.

...