Enums 是否可以使用JAXB2映射带有字符串值的枚举?

Enums 是否可以使用JAXB2映射带有字符串值的枚举?,enums,jaxb,schema,Enums,Jaxb,Schema,需要生成如下所示的枚举类: public enum FileTypes { TEXT("txt"); DOC("doc"); ENTERPRISE_ARCHIVE("ear"); } 可以使用jaxb生成这样的枚举吗?您需要使用typesafeEnumClass绑定 有一个命名约定,在该约定中为枚举指定后缀Enum 为每个xsd:enumeration值(其字符串值为文本描述)提供一个xsd:annotation,指定Java枚举值,如下所示: <xsd:enumeration

需要生成如下所示的枚举类:

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>