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);
}
}
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:WINTER
public 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:冬
列挙型かどうかはinstanceof演算子で判定することができる。
if (Season.SPRING instanceof Season) {
System.out.println("Season.SPRING is a instance of Season.");
}
Oracle 2021. Enum Types. The Java™ Tutorials