私が取り組んでいるプロジェクトでは、多くのenumが使用されています。モデルオブジェクト自体は、多くの小さなクラスから構成されています。このモデルをJAXBを介してXMLとしてXML DBに直列化します。ここでは、列挙型の特定のメソッドの戻り値を使用して列挙型の値をシリアル化できるようにしたいと考えています。それが与えられます。JAXB経由でenumのカスタム値のシリアル化を提供
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にシリアライズするとき、現在、私たちのようなものを得る:JAXBはそれをどのように処理するかである
<qualifier>FOO</qualifier>
を。しかし、getCode()の戻り値が必要であり、多くのenumがその規約に従っています(コードによるルックアップの静的メソッドに対応)。
<qualifier>1E</qualifier>
代わりに。 @XmlEnum
と@XmlEnumValue
と注釈を付けることができますが、それはあまりにも面倒です - いくつかの列挙型には最大30の列挙値があり、手動編集は良くありません。代わりにカスタムシリアライザを使用することも考えていますが、今はそのルートには行かないようにしたいと思います(ただし、これが問題になる場合は問題ありません)。
どのようにすればいいですか?
うーん...これは我々が探しているもののように見えます。私の問題は実際には一般的ではないことです(列挙型のジェネリックは使用できません)が、それは実行可能です。列挙型の値に注釈を付けるのではなく、列挙型ごとにアダプタを1つ作成する方が良いでしょう。ありがとう! – jmibanez