列挙型に関するデータ型を以下に示す。
enum(列挙型)は、定数の有限集合を定義する。
package com.segakuin.example;
public class Sample {
  enum Season {SPRING, SUMMER, AUTUMN, WINTER};
  public static void main(String[] args) {
    Season season = Season.SUMMER;
    System.out.println(season);
  }
}列挙型に関する演算子を以下に示す。
列挙型かどうかはinstanceof演算子で判定することができる。
if (Season.SPRING instanceof Season) {
  System.out.println("Season.SPRING is a instance of Season.");
}enum型の基底クラスはjava.lang.Enumである。したがってEnumクラスのメソッドを呼び出すことができる。
Enumクラスには次に示すstaticメソッドがある。
| メソッド | 説明 | 
|---|---|
| valueOf() | 文字列から定数インスタンスを取得する。 | 
| values() | 宣言された定数すべてを含む配列(順序は記述順)を返す。 | 
Enumクラスには次に示すinstanceメソッドがある。
| メソッド | 説明 | 
|---|---|
| ordinal() | 列挙型の序数を返す。 | 
| toString() | 列挙型の名前を返す。 | 
列挙型の序数を返す。序数は0から始まる整数である。
public final int ordinal()enum Season {
  SPRING,
  SUMMER, 
  AUTUMN,
  WINTER
}
public class Example {
  public static void main(String[] args) {
    System.out.println(Season.SUMMER.ordinal());
  }
}列挙型の名前を返す。
public String toString()enum Season {
  SPRING,
  SUMMER, 
  AUTUMN,
  WINTER
}
public class Example {
  public static void main(String[] args) {
    System.out.println(Season.SUMMER.toString());
  }
}名前を指定して列挙型(enum)の値を取得するには、java.lang.Enum クラスの valueOf() メソッドを使う。
enum Season {
  SPRING,
  SUMMER, 
  AUTUMN,
  WINTER
}
public class Example {
  public static void main(String[] args) {
    String name = "SUMMER";
    try {
      Season season = Season.valueOf(name);
    } catch (NullPointerException e) {
      e.printStackTrace();
    } catch (IllegalArgumentException e) {
      e.printStackTrace();
    }
  }
}enumのvaluesメソッドは、宣言された定数すべてを含む配列(順序は記述順)を返す。
public class Sample {
  enum Season {SPRING, SUMMER, AUTUMN, WINTER};
  public static void main(String[] args) {
    for (Season season : Season.values()) {
      System.out.println(season.ordinal() + ":" + season);
    }
  }
}上記プログラムの実行結果を示す。
0:SPRING
1:SUMMER
2:AUTUMN
3:WINTERpublic class Sample {
  enum Season {
    SPRING ("春"),
    SUMMER ("夏"),
    AUTUMN ("秋"),
    WINTER ("冬");
    private String name;
    Season(String name) {
      this.name = name;
    }
    public String toString() {
      return name;
    }
  };
  public static void main(String[] args) {
    for (Season season : Season.values()) {
      System.out.println(season.name() + ":" + season.toString());
    }
  }
}上記プログラムの実行結果を示す。
SPRING:春
SUMMER:夏
AUTUMN:秋
WINTER:冬Oracle 2021. Enum Types. The Java™ Tutorials