我遇到了使用JAX-B生成enum
的问题。
我们在模式中有一个语言代码,通过大小写分隔相同的元素。
例如,我们有一个de
的条目和一个DE
的条目,结果与emun中的所有其他语言代码结合使用,如下所示:
/**
* Afar
*
*/
@XmlEnumValue("aa")
VALUE_1("aa"),
/**
* Afar
*
*/
@XmlEnumValue("AA")
VALUE_2("AA"),
尝试通过VALUE_X
命名访问值时有什么问题。
有没有办法防止这种情况发生。
我期待enum
,AA
等DE
值,我知道它们必须是唯一的。在这种唯一不同的情况下该怎么做。
答案 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
。