34.3. Enumerations
概述
在 XML Schema 中,枚举的类型是使用 xsd:enumeration
facet 定义的简单类型。与 atomic 简单类型不同,它们映射到 Java 枚举
。
在 XML Schema 中定义枚举类型
Enumerations 是使用 xsd:enumeration
facet 的简单类型。每个 xsd:enumeration
facet 为枚举类型定义一个可能的值。
例 34.5 “XML 架构定义枚举” 显示枚举的类型的定义。它有以下可能的值:
-
big
-
大
-
mungo
-
gargantuan
例 34.5. XML 架构定义枚举
<simpleType name="widgetSize"> <restriction base="xsd:string"> <enumeration value="big"/> <enumeration value="large"/> <enumeration value="mungo"/> <enumeration value="gargantuan"/> </restriction>
映射到 Java
XML Schema enumerations,其中基本类型为 xsd:string
会自动映射到 Java enum
类型。您可以使用 第 38.4 节 “自定义枚举映射” 中描述的自定义来指示代码生成器与其他基本类型的枚举映射到 Java enum
类型。
enum
类型创建如下:
类型的名称取自简单类型定义的
name
属性并转换为 Java 标识符。通常,这意味着将 XML 架构名称的第一个字符转换为大写字母。如果 XML 架构名称的第一个字符是无效字符,则名称前将加上下划线(
_
)。对于每个
枚举
的问题,会根据value
属性的值生成一个枚举常量。常数的名称通过将值中的所有小写字母转换为等效的大写来派生。
- 生成构造器,它将获取从枚举的基本类型映射的 Java 类型。
生成了一个名为
value ()
的公共方法来访问由类型实例代表的 facet 值。value ()
方法的返回类型是 XML Schema 类型的基本类型。生成了一个名为
fromValue ()
的公共方法,以根据 facet 值创建 enum 类型的实例。value ()
方法的参数类型是 XML Schema 类型的基本类型。-
类使用
@XmlEnum
注释进行解码。
例 34.5 “XML 架构定义枚举” 中定义的枚举类型映射到 例 34.6 “为 String Bases XML Schema Enumeration 生成 Enumerated Type” 中显示的 enum
类型。
例 34.6. 为 String Bases XML Schema Enumeration 生成 Enumerated Type
@XmlType(name = "widgetSize") @XmlEnum public enum WidgetSize { @XmlEnumValue("big") BIG("big"), @XmlEnumValue("large") LARGE("large"), @XmlEnumValue("mungo") MUNGO("mungo"), @XmlEnumValue("gargantuan") GARGANTUAN("gargantuan"); private final String value; WidgetSize(String v) { value = v; } public String value() { return value; } public static WidgetSize fromValue(String v) { for (WidgetSize c: WidgetSize.values()) { if (c.value.equals(v)) { return c; } } throw new IllegalArgumentException(v); } }