【发布时间】:2009-03-13 19:07:03
【问题描述】:
我正在使用 Castor 来编组/解组我的 Java 对象,其中一个对象包含 EnumMap。 Castor 可以编组/解组 EnumMaps 吗?我有一个包含一些嵌套 HashMap 的映射文件,但我从未通过 Castor 推送 EnumMap。如果可以的话,如何通过映射文件来完成?
【问题讨论】:
我正在使用 Castor 来编组/解组我的 Java 对象,其中一个对象包含 EnumMap。 Castor 可以编组/解组 EnumMaps 吗?我有一个包含一些嵌套 HashMap 的映射文件,但我从未通过 Castor 推送 EnumMap。如果可以的话,如何通过映射文件来完成?
【问题讨论】:
其中一个大问题是枚举不能真正被序列化和恢复,至少在 Java 1.5 中是这样。而且我认为在 Java 1.6 中也没有。
由于枚举不能 - 默认情况下 - 被序列化或 XMLEncoded 我非常怀疑 EnumMap 可以被序列化。来自castor web page:
虽然您始终可以使用自己的 用于处理的自定义 FieldHandler 类型安全的枚举类,Castor 确实有一个内置的方法 处理这些类型的类。 如果类型安全的枚举类有 公共静态值(字符串) 方法 Castor 将调用该方法,所以 的正确实例 返回枚举。注意:你会 还需要禁用默认 构造函数检查映射文件 (请参阅上面的第 7.4 节以了解更多信息 这个)。
如果这不起作用,您必须编写自己的 field handler。
我希望这会有所帮助。
【讨论】: