需要生成这样的枚举类:
public enum FileTypes {
TEXT("txt");
DOC("doc");
ENTERPRISE_ARCHIVE("ear");
}
是否可以使用 jaxb 生成这样的枚举?
您需要使用 typesafeEnumClass 绑定。
有一个命名约定,你给你的枚举提供后缀“Enum”。
为您的每个 xsd:enumeration 值(其字符串值是您的文本描述)指定一个 xsd:annotation,指定 Java 枚举值,如下所示:
<xsd:enumeration value="ear">
<xsd:annotation>
<xsd:appinfo>
<jaxb:typesafeEnumMember name="ENTERPRISE_ARCHIVE" />
</xsd:appinfo>
</xsd:annotation>
</xsd:enumeration>
然后按如下方式修改您的 bindings.xjb 文件,以使名称以 Enum 结尾的所有 XSD 定义类型成为具有 typesafeEnumClass 绑定的 Java 枚举:
<bindings node="//xs:simpleType[substring(@name,string-length(@name)-3) = 'Enum']" multiple="true" required="false">
<typesafeEnumClass />
</bindings>