Почему JAXB не использует мой собственный подкласс - PullRequest
3 голосов
/ 10 февраля 2012

У меня есть объект jaxb, который можно успешно упорядочить, и у него есть объект списка, затем я создаю новый объект, как показано ниже

public class Sub extends SuperJAXBClass{

@Override
public List getList1(){
//override here
return ...;
}
}

Тогда код как ниже: SuperJAXBClass sjc = new Sub (); маршал (ГАК)

Тогда я обнаружил, что List1 в Sub не был успешно распределен. Кто-нибудь знает, почему это происходит? Как это решить?

1 Ответ

3 голосов
/ 10 февраля 2012

Вы можете выполнить одно из следующих действий:

Опция # 1 - @XmlSeeAlso Аннотация

Реализации JAXB (JSR-222) не могут использовать отражение Java дляопределить все возможные суклассы.В качестве обходного пути вы можете аннотировать суперкласс аннотацией @XmlSeeAlso, которая предоставляет JAXB ссылку на подклассы.

@XmlSeeAlso({Sub.class})
public class SuperJAXBClass {
}

Опция # 2 - Передача подкласса при создании JAXBContext

Если вы включите подкласс при создании JAXBContext, то реализации JAXB будут знать об этом.Когда подкласс передается в метаданных для суперклассов, он также создается.

JAXBContext.newInstance(Sub.class);
...