Да, но я думаю, что в некоторых случаях это может быть правильным различием.

вопрос задавался в разных ипостасях, но я чувствую, что еще есть возможность каталогизировать это дальше.

У меня есть xsd с двумя определениями элементов

<xs:complexType name="elementA">
   <xs:sequence>
      <xs:element name="date" type="xs:string" minOccurs="0"/>
      <xs:element name="lastXdigits" type="xs:string" nillable="true" minOccurs="0"/>
   </xs:sequence>
</xs:complexType>

Это создает:

protected String date;
@XmlElementRef(name = "lastXdigits", namespace = "http://xxxxxxx", type = JAXBElement.class)
protected JAXBElement<String> lastXDigits;

Изменение xsd на:

<xs:element name="lastXdigits" type="xs:string" nillable="true" minOccurs="1"/>

результаты в:

protected String date;
@XmlElement(name = "lastXdigits", required = true, nillable = true)
protected String lastXDigits;

и используя:

<xs:element name="lastXdigits" type="xs:string" minOccurs="0"/>

результаты в:

protected String date;
@XmlElement(name = "lastXdigits")
protected String lastXDigits;

Это кажется мне очень странным. Почему lastXDigits генерируется как тип JAXBElement в первом случае и почему тип String не подходит во всех случаях? Кроме того, почему jaxb должен относиться к этим двум элементам по-разному, если их определения, кроме имени, идентичны?

Я использую задачу муравья jaxb-xjc из jaxb 2.0.5.

Это выглядит подозрительно или есть хорошее обоснование для этих различий?

Ответы на вопрос(1)

Ваш ответ на вопрос