簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM