對於我正在開發的項目,我們有很多枚舉正在使用中。模型對象本身由很多小類組成;這個模型然後通過JAXB作爲XML序列化到我們的數據庫。現在,我們希望能夠使用enum中特定方法的返回來序列化枚舉值;是給予:通過JAXB爲枚舉提供自定義值序列化
public enum Qualifier {
FOO("1E", "Foo type document"),
BAR("2", "Bar object");
private String code, description;
public Qualifier(String code, String description) {
this.code = code;
this.description = description;
}
public String getCode() {
return this.code;
}
public String getDescription() {
return this.description;
}
}
等等等等。目前,當序列化到XML,我們得到這樣的:
<qualifier>FOO</qualifier>
這是JAXB如何處理它。但是,我們需要將值作爲getCode()的返回值,並且我們的很多枚舉遵循該約定(通過代碼查找相應的靜態方法),以便上面的XML片段看起來像:
<qualifier>1E</qualifier>
改爲。我們可以使用@XmlEnum
和@XmlEnumValue
對它進行註釋,但這太乏味 - 一些枚舉最多可以枚舉30個值,而手動編輯它並不好。我們也在考慮使用自定義序列化器,但我現在想避免這種路由(但是如果這是一條路,那麼我沒有問題)。
任何想法如何?
嗯......這個好像我們要找的人。我的問題實際上是它不夠普遍(不能在enum上使用泛型),但這是可行的。最好爲每個枚舉創建一個適配器,而不是自己註釋枚舉值。謝謝! – jmibanez 2011-01-11 14:20:40