使用getter时,阻止jaxb初始化列表

时间:2018-01-22 11:40:50

标签: java xml jaxb unmarshalling

Jaxb为列表类型生成此代码:

public List<String> getMyList() {
    if (myList == null) {
        myList = new ArrayList<String>();
    }
    return this.myList;
}

我希望它只返回字段而不是初始化。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。 我在XSD文件中声明一个列表,如下所示:

<xs:element name="parameter" nillable="true" minOccurs="0" maxOccurs="999">

产生的java类的字段声明为:

@XmlElement(nillable = true)
protected List<ServiceType.Parameter> parameter;

但吸气剂:

public List<ServiceType.Parameter> getParameter() {
    if (parameter == null) {
        parameter = new ArrayList<ServiceType.Parameter>();
    }
    return this.parameter;
}

我知道JAXB将列表作为引用进行处理,但这显然不支持XSD定义可定义的可选列表的功能,因为列表永远不会返回为空。

有人知道有什么插件可以摆脱可空列表的延迟初始化吗?

致谢