34.3. 列挙


概要

XML Schema では、列挙型は xsd:enumeration ファセットを使用して定義された単純な型です。アトミック単純なタイプとは異なり、これらは Java enums にマッピングされます。

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 タイプは以下のように作成されます。

  1. タイプの名前は、単純なタイプ定義の name 属性から取得され、Java 識別子に変換されます。

    一般に、これは XML スキーマの名前の最初の文字を大文字に変換することを意味します。XML スキーマ名の最初の文字が無効な文字である場合は、名前の前にアンダースコア (_) が追加されます。

  2. enumeration ファセットごとに、列挙定数が value 属性の値に基づいて生成されます。

    定数の名前は、値内のすべての小文字を同等の大文字に変換することによって付けられます。

  3. 列挙型の基本型からマップされた Java 型を取得するコンストラクターが生成されます。
  4. value() というパブリックメソッドは、タイプのインスタンスによって表されるファセット値にアクセスするための生成されます。

    value() メソッドの戻り値タイプは、XML Schema 型のベースタイプです。

  5. fromValue() というパブリックメソッドが生成され、ファセット値に基づいて列挙タイプのインスタンスを作成します。

    value() メソッドのパラメータータイプは、XML Schema 型のベースタイプです。

  6. クラスは @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);
    }

}
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.