gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:00:30 25 4
gpt4 key购买 nike

在我们的项目中,我们有许多实现特定接口(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com