Menu Close
34.3. 列挙
概要
XML スキーマでは、列挙型は xsd:enumeration
ファセットを使用して定義される単純型です。アトミック単純型とは異なり、それらは Java enum
にマッピングされます。
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 スキーマ列挙は、自動的に Java enum
型にマッピングされます。「列挙マッピングのカスタマイズ」で説明されているカスタマイズを使用すると、コードジェネレーターに対し、他のベース型の列挙を Java enum
型にマッピングするように指示できます。
enum
型は以下のように作成されます。
型の名前は 単純型定義の
name
属性から取得され、Java 識別子に変換されます。通常、これは XML スキーマの名前の最初の文字を大文字に変換することを意味します。XML スキーマ名の最初の文字が無効な文字である場合は、名前の前にアンダースコア (
_
) が追加されます。enumeration
ファセットごとに、列挙定数がvalue
属性の値に基づいて生成されます。定数の名前は、値のすべての小文字を対応する大文字に変換することで導出されます。
- 列挙のベース型からマッピングされた Java 型を取るコンストラクターが生成されます。
型のインスタンスによって表されるファセットの値にアクセスするために、
value()
というパブリックメソッドが生成されます。value()
メソッドの戻り値の型は、XML スキーマ型のベース型です。ファットの値に基づいて列挙型のインスタンスを作成するために、
fromValue()
というパブリックメソッドが生成されます。value()
メソッドのパラメーター型は、XML スキーマ型のベース型です。-
クラスに
@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); } }