[英]Control how Moxy serializes and deserializes enums in a generic way
在我們的項目中,我們有許多實現特定接口的枚舉,這是一種如何控制其在數據庫中的支持的方法。 核心是一個方法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
。 (編組部分很容易實現。)
我不認為這是可能的。 我擔心MOXy / JAXB RI中沒有這樣的機制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.