Предположим, у вас сложный тип
<xs:complexType name="RepeatingNormalizedStringType">
<xs:sequence>
<xs:element name="repeatingNormalizedString" type="xs:normalizedString" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
JAXB отображает элемент repeatingNormalizedString
в
@XmlElementRef(name = "repeatingNormalizedString", namespace = "urn:test", type = JAXBElement.class)
protected List<JAXBElement<String>> repeatingNormalizedString;
вместо
protected List<String> repeatingNormalizedString;
, как вы могли ожидать,
Это происходит со всеми подтипами normalizedString
.Это также проявляется, когда элемент в повторяющейся группе или последовательности имеет тип normalizedString
, в этих случаях группа / последовательность свернута до:
protected List<JAXBElement<?>> synthesisedGroupOrSequencePropertyName;
, даже если вы обычно ожидаете List<Object>
или List<NearestCommonSupertype>
.
Я прочел спецификацию JAXB, например, раздел 6.7, 6.12, но не могу найти описание этой ситуации.
Мои два вопроса:
- Почему происходит такое поведение?Я предполагаю, что это связано с тем фактом, что к
normalizedString
и его подтипам должен быть применен адаптер типов. - Существуют ли другие простые типы, с которыми это поведение будет происходить?
Приветствия,
Мэтью