У меня есть класс, сгенерированный JAXB, с коллекцией с абстрактным типом COBJECT.
У COBJECT есть несколько потомков, и у этих потомков также есть абстрактные потомки.
Фрагмент из иерархии классов выглядит следующим образом:
COBJECT (abstract)
|
|---CDEFINEDOBJECT
|
|--CDOMAINTYPE (abstract)
|
|---CCODEPHRASE
Когда я добавляю объект CCODEPHRASE в коллекцию с типом COBJECT, например
protected List<COBJECT> children;
JAXB пытается создать COBJECT, который является абстрактным типом, и он терпит неудачу. Я пытался добавить
@XmlElementRefs({
@XmlElementRef(type = ARCHETYPEINTERNALREF.class),
@XmlElementRef(type = CONSTRAINTREF.class),
@XmlElementRef(type = CDEFINEDOBJECT.class),
@XmlElementRef(type = ARCHETYPESLOT.class),
@XmlElementRef(type = CCODEPHRASE.class)
})
protected List<COBJECT> children;
перед дочерним полем, но в ответ я получил исключение "Тип или любой из его подклассов неизвестен".
Входные данные XML содержат атрибут XSI: TYPE = .... Как мне заставить JAXB обрабатывать эту структуру наследования?