是否可以使用JAXB2将字符串值映射到枚举?

时间:2012-05-31 11:01:36

标签: enums jaxb schema

需要像这样生成枚举类:

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

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

1 个答案:

答案 0 :(得分:0)

您需要使用typesafeEnumClass绑定。

  1. 有一个命名惯例,您可以在其中为枚举添加后缀“Enum”。

  2. 给出每个xsd:枚举值(其字符串值是您的文本描述)和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>