可选属性上的JAXB自定义getter / setter

时间:2014-12-18 14:53:48

标签: java jaxb

如上所述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原语?

很多你的帮助 此致

1 个答案:

答案 0 :(得分:0)

<xsd:attribute name="id" type="xsd:int" use="required"/>

中更改您的属性

如果你不使用required,那么这个属性可以是nillable,而在java对象中只有Integer可以表示这个概念。

Reference here

  

由于属性是可选的,因此可能存在   nillable使用原语是不可能的。该   java.lang.Integer是一个Object,因此允许为null,所以它   有意义的是生成&lt; xsd:attribute type =“xsd:int”/&gt;作为一个   为java.lang.Integer。   如果你需要一个属性(use =“required”),它将生成一个原始int。我没有   看到JAXB的文档明确说明了这一点,但事实并非如此   意味着它不存在;也许我只是错过了它。