34.3. 列挙
概要
XML Schema では、列挙型は xsd:enumeration
ファセットを使用して定義された単純な型です。アトミック単純なタイプとは異なり、これらは Java enum
s にマッピングされます。
XML スキーマで列挙型を定義する
列挙型は、xsd:enumeration
ファセットを使用したシンプルなタイプです。各 xsd:enumeration
ファセットは、列挙されたタイプの 1 つの可能な値を定義します。
例34.5「XML スキーマ定義の列挙」 は、列挙型の定義を示します。次の可能な値があります。
-
big
-
large
-
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 へのマッピング
ベースタイプが xsd:string
である XML Schema の列挙型は、自動的に Java の enum
型にマッピングされます。「列挙マッピングのカスタマイズ」 で説明されているカスタマイズを使用すると、コードジェネレーターに対し、他のベース型の列挙を Java enum
型にマッピングするように指示できます。
enum
タイプは以下のように作成されます。
タイプの名前は、単純なタイプ定義の
name
属性から取得され、Java 識別子に変換されます。一般に、これは XML スキーマの名前の最初の文字を大文字に変換することを意味します。XML スキーマ名の最初の文字が無効な文字である場合は、名前の前にアンダースコア (
_
) が追加されます。enumeration
ファセットごとに、列挙定数がvalue
属性の値に基づいて生成されます。定数の名前は、値内のすべての小文字を同等の大文字に変換することによって付けられます。
- 列挙型の基本型からマップされた Java 型を取得するコンストラクターが生成されます。
value()
というパブリックメソッドは、タイプのインスタンスによって表されるファセット値にアクセスするための生成されます。value()
メソッドの戻り値タイプは、XML Schema 型のベースタイプです。fromValue()
というパブリックメソッドが生成され、ファセット値に基づいて列挙タイプのインスタンスを作成します。value()
メソッドのパラメータータイプは、XML Schema 型のベースタイプです。-
クラスは
@XmlEnum
アノテーションで禁止されています。
例34.5「XML スキーマ定義の列挙」で定義される列挙型は、例34.6「文字列ベースの XML スキーマ列挙用に生成された列挙型」に記載の enum
型にマッピングされます。
例34.6 文字列ベースの XML スキーマ列挙用に生成された列挙型
@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); } }