【问题标题】:Prevent jaxb to initialize a list when using getter使用getter时防止jaxb初始化列表
【发布时间】:2018-01-22 11:40:49
【问题描述】:

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

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

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

我该怎么做?

【问题讨论】:

    标签: java xml jaxb unmarshalling


    【解决方案1】:

    我也有同样的问题。 我在 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 定义可空可选列表的能力,因为列表永远不会返回为 null。

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

    问候

    【讨论】:

      猜你喜欢
      • 2016-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      • 2017-08-25
      • 1970-01-01
      • 2015-08-14
      相关资源
      最近更新 更多