如上所述here,可选属性是作为Java原语生成的。 完美,它正是我想要的。
<xsd:complexType name="applicationType">
[...]
<xsd:attribute name="id" type="xsd:int"/>
</xsd:complexType>
将受到约束:
@XmlAttribute(name = "id")
protected Integer id;
...但是:getter还是返回int! (随着拳击引擎盖)
public int getId() {
return id;
}
所以,问题是: 我如何强制getter方法返回Java原语?
很多你的帮助 此致
答案 0 :(得分:0)
在<xsd:attribute name="id" type="xsd:int" use="required"/>
如果你不使用required,那么这个属性可以是nillable,而在java对象中只有Integer
可以表示这个概念。
由于属性是可选的,因此可能存在 nillable使用原语是不可能的。该 java.lang.Integer是一个Object,因此允许为null,所以它 有意义的是生成&lt; xsd:attribute type =“xsd:int”/&gt;作为一个 为java.lang.Integer。 如果你需要一个属性(use =“required”),它将生成一个原始int。我没有 看到JAXB的文档明确说明了这一点,但事实并非如此 意味着它不存在;也许我只是错过了它。