簡體   English   中英

Jaxb生成的類使用JAXBElement而不是指定的類型

[英]Jaxb generated class used JAXBElement instead of specified type

這個問題已被各種各樣的問題提出來 - 但我覺得仍然有進一步編目的空間。

我有一個帶有兩個元素定義的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應該區別對待這兩個元素呢?

我正在使用jaxb 2.0.5中的jaxb-xjc ant任務。

這看起來是否可疑或是否有充分的理由來解決這些差異?

如果nillable="true"minOccurs="0" ,則不可能只用String表示值。 null意味着什么? 這是否意味着它是空的,或者它發生了0次? 但是我想這只是一個字符串有點沒什么問題。

與空列表比較。 空列表肯定與空列表不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM