【发布时间】: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<String, Weekday>
但是,我想知道是否有可能提供更优雅的解决方案,它既不需要每个枚举的适配器,也不需要枚举实现中的附加代码(例如,@XmlEnumValue)。
一种透明地用于实现我的PersistableEnum 接口的所有枚举的方法。
我没有成功实现XmlAdapter<String, PersistableEnum>,因为我没有要解组的类的上下文;因此,我不知道使用哪个PersistableEnum。 (虽然编组部分很容易实现。)
【问题讨论】:
标签: java enums eclipselink marshalling moxy