【问题标题】: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。
有人知道有什么插件可以摆脱可空列表的延迟初始化吗?
问候