Да, но я думаю, что в некоторых случаях это может быть правильным различием.
вопрос задавался в разных ипостасях, но я чувствую, что еще есть возможность каталогизировать это дальше.
У меня есть 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.
Это выглядит подозрительно или есть хорошее обоснование для этих различий?