enum MyEnum {
SOME_ENUM_CONSTANT {
@Override
public void method() {
System.out.println("first enum constant behavior!");
}
},
ANOTHER_ENUM_CONSTANT {
@Override
public void method() {
System.out.println("second enum constant behavior!");
}
}; // note the semi-colon after the final constant, not just a comma!
public abstract void method(); // could also be in an interface that MyEnum implements
}
void aMethodSomewhere(final MyEnum e) {
doSomeStuff();
e.method(); // here is where the switch would be, now it's one line of code!
doSomeOtherStuff();
}
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}
public class EnumTest {
Day day;
public EnumTest(Day day) {
this.day = day;
}
public void tellItLikeItIs() {
switch (day) {
case MONDAY:
System.out.println("Mondays are bad.");
break;
case FRIDAY:
System.out.println("Fridays are better.");
break;
case SATURDAY:
case SUNDAY:
System.out.println("Weekends are best.");
break;
default:
System.out.println("Midweek days are so-so.");
break;
}
}
}
# 1 楼答案
实际上,你可以在Java中使用带字符串的switch语句。。。不幸的是,这是Java7的一个新特性,大多数人还没有使用Java7,因为它太新了
# 2 楼答案
实际上,您可以在
enum
上switch
,但在Java 7之前,您不能在String
上switch
。您可以考虑使用java ^ ^ {CD2> }s而不是显式^ {< CD1> }使用多态方法。请注意enum
在Java中是对象,而不仅仅像在C/C++中那样是int
的符号。你可以在enum
类型上有一个方法,然后不用写switch
,只需调用这个方法——一行代码:done# 3 楼答案
你绝对可以打开枚举。一个来自Java tutorials的例子
# 4 楼答案
您可能在交换机案例中错误地使用了枚举。与CoolBeans的上述示例相比。。您可能正在执行以下操作:
确保使用实际的枚举值,而不是枚举类型。枚举值
Eclipse指出了这个错误
# 5 楼答案
首先,可以在Java中打开
enum
。我猜你是想说你不能,但你可以char
有一组值,因此比较容易。字符串可以是任何东西在底层编译中,
switch
语句通常作为jump table (branch table)实现,这只有在有限的值集合中才可能实现。C#可以打开字符串,但由于无法使用跳转表,这会导致性能下降Java 7及更高版本支持具有相同特征的^{} switches
# 6 楼答案
关于编程的文章。指南:Switch on enum
字符串的开关在Java 7中实现