我们使用jaxb2从xml模式定义为一些外部数据生成java代码。这个项目非常老,使用了maven jaxb plugin 1.1.1。我们想更新到jaxb2 maven plugin,它也将使用jaxb2,但是我们在生成的代码中发现了一些差异。具体来说,我们的属性是
<xsd:attribute name="num" type="xsd:int" use="optional">
Map到的 Integer
生成的代码中的字段。
@XmlAttribute(name = "num")
protected Integer num;
但是,jaxb2生成的getter和setter是基元类型,而不是可为null的类型:
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
返回一个可为null的装箱类型,并在单元测试中测试该类型,单元测试失败并出现null指针异常。
有没有一种方法可以为可选属性生成具有可空类型的getter/setter?xsd文件是由外部供应商提供的,所以我不想修改它们。我们不设定 optionalProperty
在 <globalBindings>
,因此该值是默认值 wrapper
.
1条答案
按热度按时间j8yoct9x1#
我想我有办法解决我自己的问题。除了
optionalProperty
在globalBindings
,有选择generateIsSetMethod
如果方法isSetNum
是否生成。如果启用此选项,则基本类型(如int
将使用而不是Integer
.