はじめに
enum型の変数をswitch文で分岐させたい時にハマったのでメモ。
やろうとしたこと
こんな感じのenumがあって渡されたenum型の値をswitch文で分岐させようとした。
HogeType.java
public enum HogeType {
NONE(0),
FIRST(1),
SECOND(2)
}
ダメな例
public void hoge(HogeType hogeType){
switch(hogeType){
case HogeType.FIRST:
System.out.println("first");
break;
case HogeType.SECOND:
System.out.println("second");
break;
default:
System.out.println("none");
}
}
この中のcase HogeType.FIRST:
の部分でエラーが出ていました。内容はan enum switch case label must be the unqualified name of an enumeration constant
というものです。
正解
public void hoge(HogeType hogeType){
switch(hogeType){
case FIRST:
System.out.println("first");
break;
case SECOND:
System.out.println("second");
break;
default:
System.out.println("none");
}
}
調べたところenum型をswitch文の引数にとる場合は、caseに与える値を定数にしなければならないらしいです。つまりHogeType.
という記述がいらなくなります。