3
在我們的項目中,我們有許多枚舉實現了一個特定的接口,這是一種如何控制其在數據庫中的支持。核心是一個方法getCode
,它返回存儲在數據庫中的值。控制Moxy如何以通用方式序列化和反序列化枚舉
此值應由Moxy用於編組和unmarshalling。
例如,枚舉看起來如下:
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
值。
我的方案,我需要莫西序列化MONDAY
爲MON
,這是可能的
- 實現
@XmlEnumValue("MON")
或 - 適配器
XmlAdapter<String, Weekday>
不過,我想要知道是否有可能提供更優雅的解決方案,它不需要每個枚舉的適配器,也不需要枚舉實現中的附加代碼(例如,@XmlEnumValue
)。
一種透明地用於實現我的PersistableEnum
接口的所有枚舉的方式。
我沒有成功執行XmlAdapter<String, PersistableEnum>
,因爲我沒有該類的上下文解組;因此,我不知道使用哪個PersistableEnum
。 (雖然編組部分很容易實現。)