在我们的项目中,我们有许多实现特定接口的枚举,这是一种如何控制其在数据库中的支持的方法。核心是一个方法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
。 (编组部分很容易实现。)
答案 0 :(得分:1)
我不认为这是可能的。我担心MOXy / JAXB RI中没有这样的机制。