gpt4 book ai didi

java - JAXB2 为可选属性生成具有原始类型的 getter/setter

转载 作者:行者123 更新时间:2023-11-30 06:36:42 25 4
gpt4 key购买 nike

我们使用 jaxb2 从某些外部数据的 xml 模式定义生成 Java 代码。该项目相当古老,使用了 maven-jaxb-plugin 1.1.1。我们想要更新到 jaxb2-maven-plugin,它也将使用 jaxb2,但我们发现生成的代码存在一些差异。具体来说,我们有以下形式的属性

    <xsd:attribute name="num" type="xsd:int" use="optional">

映射到Integer生成的代码中的字段。

@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 文件是由外部供应商提供的,因此我不想修改它们。我们不设置optionalProperty<globalBindings> ,所以该值为默认 wrapper .

最佳答案

我想我已经解决了我自己的问题。除了 globalBindings 中的 optionProperty 之外,还有一个选项 generateIsSetMethod,它控制是否生成诸如 isSetNum 之类的方法,或者不是。如果启用此功能,将使用 int 等基本类型而不是 Integer

关于java - JAXB2 为可选属性生成具有原始类型的 getter/setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45103675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com