我正在尝试使用JAXB从xsd生成类,并利用xsd中的默认值。
但是,当我将xs:boolean元素的默认值设置为"true"时,该值未被设置,并且由于Boolean对象值未初始化为true,我会收到空指针异常。
当我尝试调用函数时:
<xs:element name="statsEnabled" type="xs:boolean" minOccurs="0" default="true"/>
我做错了什么?我们只能为xs:string设置默认值,而不能为xs:boolean设置默认值吗?
生成的xml文件类似于这样:
public class Cluster {
@XmlElement(defaultValue = "true")
protected Boolean topoEnabled;
@XmlElement(defaultValue = "true")
protected Boolean statsEnabled;
public Boolean isTopoEnabled() {
return topoEnabled;
}
public Boolean isStatsEnabled() {
return statsEnabled;
}
}
当我尝试调用函数时:
Cluster cluster = new cluster();
if(cluster.isTopoEnabled)
.....
或者
if(cluster.isStatEnabled)
....
我遇到了空指针错误。虽然在我的代码中已经处理了这个null值。
我很好奇为什么默认值不起作用。我做错了什么?应该怎么办? 或者说,默认值只适用于xs:string元素而不是其他元素吗?
Boolean
而不是boolean
,因此当找不到一个元素时,将会引发null
...实际上这是一个错误。 在此处找到解决方法 - Jordi Castilla