【问题标题】:Control how Moxy serializes and deserializes enums in a generic way控制 Moxy 如何以通用方式序列化和反序列化枚举
【发布时间】:2015-04-06 15:50:05
【问题描述】:

在我们的项目中,我们有许多实现特定接口的枚举,这是一种如何控制其在数据库中的支持的方法。核心是一个方法getCode,它返回存储在数据库中的值。

这个值应该被 Moxy 用于编组和解组。

例如,枚举如下所示:

enum Weekday implements PersistableEnum<String> {
    MONDAY("MON"),
    // .. all the remaining days
    ;
    // the constructor which sets the code, etc.

    @Override
    public String getCode() {
         return code;
    }
}

通过使用接口PersistableEnum(为简单起见进行了简化):

interface PersistableEnum<C> {
    C getCode();
}

使用code 值在数据库中支持枚举(和所有其他枚举)。

在我的场景中,我需要 Moxy 将MONDAY 序列化为MON,这可以通过

  • @XmlEnumValue("MON")
  • 适配器XmlAdapter&lt;String, Weekday&gt;

但是,我想知道是否有可能提供更优雅的解决方案,它既不需要每个枚举的适配器,也不需要枚举实现中的附加代码(例如,@XmlEnumValue)。
一种透明地用于实现我的PersistableEnum 接口的所有枚举的方法。

我没有成功实现XmlAdapter&lt;String, PersistableEnum&gt;,因为我没有要解组的类的上下文;因此,我不知道使用哪个PersistableEnum。 (虽然编组部分很容易实现。)

【问题讨论】:

    标签: java enums eclipselink marshalling moxy


    【解决方案1】:

    我认为这是不可能的。恐怕MOXy/JAXB RI中没有这种机制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-06
      • 1970-01-01
      • 2021-11-28
      • 2021-11-30
      • 1970-01-01
      • 2013-05-20
      • 2012-09-10
      相关资源
      最近更新 更多