具有相同元素的JAX-B枚举生成

时间:2016-11-05 16:56:03

标签: java enums jaxb

我遇到了使用JAX-B生成enum的问题。 我们在模式中有一个语言代码,通过大小写分隔相同的元素。 例如,我们有一个de的条目和一个DE的条目,结果与emun中的所有其他语言代码结合使用,如下所示:

/**
 * Afar
 * 
 */
@XmlEnumValue("aa")
VALUE_1("aa"),

/**
 * Afar
 * 
 */
@XmlEnumValue("AA")
VALUE_2("AA"),

尝试通过VALUE_X命名访问值时有什么问题。 有没有办法防止这种情况发生。 我期待enumAADE值,我知道它们必须是唯一的。在这种唯一不同的情况下该怎么做。

1 个答案:

答案 0 :(得分:2)

如果您的问题只是命名VALUE_1,您可以通过为小写条目自定义枚举成员名来解决此问题:

<jaxb:bindings schemaLocation=".../myxsd" node="/xs:schema">
    <jaxb:bindings node="xs:simpleType[@name='MyLangType']">
        <jaxb:typesafeEnumClass>
            <jaxb:typesafeEnumMember name="LOWER_AA" value="aa"/>
            <!-- ... -->
        </jaxb:typesafeEnumClass>
    </jaxb:bindings>
</jaxb:bindings>

您还可以考虑使用java.util.Locale将您的类型直接映射到jaxb:javaType