Jaxb生成的类使用JAXBElement而不是指定的类型
这个问题已被各种各样的问题提出来 – 但我觉得仍然有进一步编目的空间。
我有一个带有两个元素定义的xsd
这会产生:
protected String date; @XmlElementRef(name = "lastXdigits", namespace = "http://xxxxxxx", type = JAXBElement.class) protected JAXBElement lastXDigits;
将xsd更改为:
结果是:
protected String date; @XmlElement(name = "lastXdigits", required = true, nillable = true) protected String lastXDigits;
和使用:
结果是:
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次? 但是我觉得这只是一个字符串有点没有实际意义。
与空列表比较。 空列表肯定与空列表不同。