XJC生成的Java类没有原始布尔类型

时间:2015-09-27 12:09:09

标签: java ant xsd jaxb xjc

我有一个带有数据定义的XSD文件。基于XSD文件,基于ant的目标执行XJC命令以从XSD生成Java类。

我遇到的问题是XSD <attribute>标记;当我将默认值设置为'true'时,它采用包装器布尔值而不是原始布尔值。

<xs:element name="TagElement">
    <xs:complexType>
      <xs:attribute name="name" type="xs:string"/>
      <xs:attribute name="type" use="required" type="xs:int"/>
      <xs:attribute name="booleanAttr" type="xs:boolean" default="true" >
      </xs:attribute>
    </xs:complexType>
  </xs:element>

上面的XSD定义生成包装器布尔值。

如果不存在default属性,而是required="true",那么它可以正常工作。所以,这很好用:

<xs:attribute name="booleanAttr" type="xs:boolean" use="required" />

如何解决这个问题?如何确保生成的Java类具有布尔基本类型而不是包装器布尔值?

XSD生成的Java代码:

@XmlAttribute(name = "booleanAttr")
protected Boolean booleanAttr;

public boolean isBooleanAttr() {
    if (booleanAttr == null) {
        return true;
    } else {
        return booleanAttr;
    }
}

public void setBooleanAttr(Boolean value) {
    this.booleanAttr = value;
}

0 个答案:

没有答案