Enum1とEnum2の2つの列挙型クラスがあります。
enum Enum1 {ONE, TWO, THREE}
enum Enum2 {FOUR, FIVE}
そして私はこのような方法を持っています:
public <E extends Enum<E>> method (E arg) {
switch (arg) { // Here is the compile error -- Cannot switch
// on a value of type E. Only convertible int
// values, strings or enum variables are permitted
// (And of course, all the cases are incorrect
// because the enum set is unknown)
case ONE:
// do something
case TWO:
// do something
case THREE:
// do something
case FOUR:
// do something
case FIVE:
// do something
default:
// do something
}
}
では、ジェネリック列挙型の値を切り替えることは可能ですか?
文字列に変更する方法が1つあります(JDK7でのみ機能します)。
public <E extends Enum<E>> method (E arg) {
switch (arg.name()) {
case "ONE":
// do something
case "TWO":
// do something
case "THREE":
// do something
case "FOUR":
// do something
case "FIVE":
// do something
default:
// do something
}
}