1

需要生成这样的枚举类:

public enum FileTypes {
TEXT("txt");
DOC("doc");
ENTERPRISE_ARCHIVE("ear");
}

是否可以使用 jaxb 生成这样的枚举?

4

1 回答 1

0

您需要使用 typesafeEnumClass 绑定。

  1. 有一个命名约定,你给你的枚举提供后缀“Enum”。

  2. 为您的每个 xsd:enumeration 值(其字符串值是您的文本描述)指定一个 xsd:annotation,指定 Java 枚举值,如下所示:

        <xsd:enumeration value="ear">
            <xsd:annotation>
                <xsd:appinfo>
                    <jaxb:typesafeEnumMember name="ENTERPRISE_ARCHIVE" />
                </xsd:appinfo>
            </xsd:annotation>
        </xsd:enumeration>
    
  3. 然后按如下方式修改您的 bindings.xjb 文件,以使名称以 Enum 结尾的所有 XSD 定义类型成为具有 typesafeEnumClass 绑定的 Java 枚举:

    <bindings node="//xs:simpleType[substring(@name,string-length(@name)-3) = 'Enum']" multiple="true" required="false">
            <typesafeEnumClass />
    </bindings>
    
于 2013-04-08T09:52:02.877 回答