Как я могу реализовать "вариантный" класс, который будет действовать как адаптер между объектными и JAXB-поддерживаемыми типами?
Я мог бы затем использовать Object в JAXB-аннотированных классах.
Поэтому, я думаю, мне нужно было бы хранить идентификатор типа внутри этого адаптера.
Любые идеи?
ПРИМЕЧАНИЕ. С "типами, поддерживаемыми JAXB", я имею в виду типытакие как:
все типы примитивов, String
, Date
, byte[]
, List<any-JAXB-supported-type>
.
Сценарий использования
@XmlType
class SomeClass {
@XmlJavaTypeAdapter(VariantAdapter.class) // WITH OR WITHOUT?
@XmlElement
private Object somePrimitive = null;
// ...
}
Вариант псевдокода идеи класса
@XmlRootElement
@XmlType
class Variant {
@XmlAttribute
private final String typeID;
@XmlAttribute
private final String rawXML;
// ...
}
Класс адаптера (тривиальный)
class VariantAdapter extends XmlAdapter<Object, Variant> {
@Override
public Object marshal(VariantObject arg0) throws Exception {
// ...
}
@Override
public VariantObject unmarshal(Object arg0) throws Exception {
// ...
}
}