【问题标题】:Is it possible to map enum with string values with JAXB2?是否可以使用 JAXB2 将枚举映射到字符串值?
【发布时间】:2013-04-08 17:52:02
【问题描述】:

需要生成这样的枚举类:

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

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

【问题讨论】:

    标签: enums jaxb schema


    【解决方案1】:

    您需要使用 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>
      

    【讨论】:

      猜你喜欢
      • 2021-11-09
      • 2011-04-14
      • 2019-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      • 1970-01-01
      相关资源
      最近更新 更多