String型によるswitch
言語仕様としてはswitchにString型は使用できない。
しかし、enumを経由することによりほぼ実現可能。
単純なケース(文字列とenumのメンバ名が同じ場合)
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY;
}
switch (Day.valueOf(str)) {
case SATURDAY:
case SUNDAY:
// weekend processing ...
break;
default:
// weekday processing ...
}
汎用
public enum Day {
SUNDAY("日曜"), MONDAY("月曜"), TUESDAY("火曜"), WEDNESDAY("水曜"),
THURSDAY("木曜"), FRIDAY("金曜"), SATURDAY("土曜"), UNKNOWN("");
private String str;
public Day(String str) { this.str = str; }
@Override
public String toString() { return str; }
public Day toDay(String str) {
for (Day day : values()) {
if (day.toString().equals(str))
return day;
}
return UNKNOWN;
}
}
switch (Day.toDay(str)) {
case SATURDAY:
case SUNDAY:
// weekend processing ...
break;
default:
// weekday processing ...
}