我們使用jaxb2從xml模式定義中爲某些外部數據生成Java代碼。該項目相當老,並使用maven-jaxb-plugin 1.1.1。我們想更新jaxb2-maven-plugin,它也會使用jaxb2,但是我們在生成的代碼中發現了一些差異。具體來說,我們具有其中被映射到在生成的代碼Integer
領域的JAXB2生成具有可選屬性的基元類型的獲取器/設置器
<xsd:attribute name="num" type="xsd:int" use="optional">
形式屬性。
@XmlAttribute(name = "num")
protected Integer num;
然而,JAXB2生成getter和setter與原始類型,而不是空類型:
public int getNum() {
return num;
}
public void setNum(int value) {
this.num = value;
}
public boolean isSetNum() {
return (this.num!= null);
}
public void unsetNum() {
this.num = null;
}
然而,我們目前的代碼假定getNum
返回一個可空盒裝型和還測試此單元測試,其空指針異常失敗。
是否有一種方法可以爲可選屬性生成可爲空類型的getters/setters? xsd文件是由外部供應商提供的,所以我寧願不修改它們。我們不在<globalBindings>
中設置optionalProperty
,因此該值爲默認wrapper
。