enum(イーナム)の宣言
構文
enum EnumName {
CONSTANT1,
CONSTANT2,
// ...
}
-
enum
:列挙型の宣言 -
EnumName
:列挙型の名前 -
CONSTANT1
:列挙型の定数。定数は大文字で記述されカンマ区切り、特定の値を持つ -
enumは外部からインスタンス化できない(定数として使える)
switch文で使用可能
- caseは定数で指定する下記コードでは(R,G,B)
public class Test {
public static void main(String... args) {
new Test().check(GRADE.A);
}
void check(GRADE grade) {
switch (grade) {
case A:
System.out.println("Best"); break;
default: System.out.println("Not best");
}
}
}
enum GRADE {
A(100), B(75), C(50);
int score;
private GRADE(int score) { this.score = score; }
}
- == 演算子で比較可能
enumのメソッド
-
name()
-
valueOf()
: 指定された名前のEnumを取得する -
values()
: Enumの全定数を取得する -
EnumクラスのvaluesメソッドはそのEnumに定義されている列挙子を配列に入れて返却する。
-
EnumクラスのvalueOfメソッドはStringの引数を渡し、そのインスタンスを返却する。
enumに固有の値を持たせる方法
enum Color implements Serializable {
R(255), G(204), B(0);
int code;
private Color(int code) {
this.code = code;
}
public int getCode() {
return code;
}
}
enumの呼び出し
System.out.println(Color.G.getCode());
// 204 が出力される
フィールドやメソッドの定義が可能
-
enum
はjava.lang.Enum
クラスを継承しているのでEnumクラスの一部のメソッドを使用できる
JavaのEnumにおいて、コンストラクタのアクセス修飾子はprivateである必要がある。