java - 控制 Moxy 如何以通用方式序列化和反序列化枚举

标签 java enums eclipselink marshalling moxy

在我们的项目中,我们有许多实现特定接口(interface)的枚举,这是一种如何控制其在数据库中的支持的方式。核心是一个方法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 在数据库中支持枚举(和所有其他)值(value)。

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

  • 一个@XmlEnumValue("MON")
  • 适配器 XmlAdapter<String, Weekday>

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

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

最佳答案

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

关于java - 控制 Moxy 如何以通用方式序列化和反序列化枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29474639/

相关文章:

java - EclipseLink jpql "where clause"比较时间戳未按预期工作

spring-mvc - 即使配置了 log4j.xml,也无法启用 spring orm/事务日志记录

Java 8 : Stream, NIO 和 Lambda

java - JOOQ 使用转换器将字符串转换为枚举

Java ArrayList IndexOutOfBoundsException 索引 : 1, 大小:1

javascript - JavaScript 中的标记 enum 和 JSON

c# - 如何类型检查枚举实例基类?

java - 执行 findBy[NAME]In(List<Long> ids) 时使用 eclipse 链接 POSTGRESQL 的 SPRING JPA 中出现错误

java - 在 java 中使用 printf 换行? %n 正确吗?

java - 向 Servlet 发出 AJAX POST 请求失败