В проекте, над которым я работаю, мы используем множество перечислений. Сам объект модели состоит из множества крошечных классов; затем эту модель мы сериализуем в нашу БД как XML через 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 пронумерованных значений, и редактировать их вручную нецелесообразно. Мы также думаем об использовании вместо этого настраиваемого сериализатора, но я бы не хотел пока идти по этому пути (но если это правильный путь, то у меня нет проблем с этим).
Есть идеи, как?