Я смущен этими двумя аспектами JAXB.JAXBC контекст контекста vs @XMLSeeAlso
Насколько я понимаю, при передаче имени разделенных двоеточиями пакетов в качестве контекстного пути к методу JAXBContext JAXB JAXB добавит все классы под этими пакетами к своей области, которые будут использоваться в таких операциях, как marshall/unmarshall/validate .. .и т.д.
Аннотации @XmlSeeAlso инструктируют JAXBContext связывать классы. Все примеры, которые я видел, используют эту аннотацию, чтобы указать только ее дочерние классы (я не мог понять, почему на самом деле).
Ниже приведены мои вопросы:
1- Может @XmlSeeAlso быть опущена, если классы, указанные в аннотаций находятся в пакетах, переданных JAXBContext
newInstance
метод?2- Если это верно, то почему мы должны это аннотация в первом места, где мы можем просто передать все пакеты, содержащих классы, мы должны функции
newInstance
?3- Если выше не так, мы можем использовать только пакеты, содержащие верхние классы уровня, передаваемые в
newInstance
, и использовать аннотацию @XmlSeeAlso ссылаться на все детей этих классов?
Конструктор пути пакета требует наличия объекта ObjectFactory или файла jaxb.index. Они предоставляются бесплатно, если вы компилируете из xsds, но вам больно поддерживать, если вы занимаетесь рукоделием. '@ XmlSeeAlso' поддерживает использование jaxb только для аннотаций. – teppic