在Java中打开枚举
为什么不能在Java中打开枚举?这似乎很简单,可以生成一些方便的代码。这个问题也适用于在Java中打开枚举,java,Java,为什么不能在Java中打开枚举?这似乎很简单,可以生成一些方便的代码。这个问题也适用于字符串。您可以打开字符,但不能打开字符串。您肯定可以打开枚举。一个例子张贴在 你绝对可以打开枚举。一个例子张贴在 关于编程的文章。指南: 字符串开关在Java 7中实现。关于编程的文章。指南: 字符串的开关在Java 7中实现。首先,您可以在Java中打开枚举。我猜你是想说你不能,但你可以chars有一组值,因此很容易比较。字符串可以是任何东西 switch语句通常在底层编译中实现为,这仅在有限的值集合中才
字符串
。您可以打开字符
,但不能打开字符串
。您肯定可以打开枚举。一个例子张贴在
你绝对可以打开枚举。一个例子张贴在
关于编程的文章。指南:
字符串开关在Java 7中实现。关于编程的文章。指南:
字符串的开关在Java 7中实现。首先,您可以在Java中打开
枚举。我猜你是想说你不能,但你可以char
s有一组值,因此很容易比较。字符串可以是任何东西
switch
语句通常在底层编译中实现为,这仅在有限的值集合中才可能实现。C#可以打开字符串,但它会导致性能下降,因为无法使用跳转表
Java 7和更高版本支持相同的特性。首先,您可以在Java中打开枚举。我猜你是想说你不能,但你可以char
s有一组值,因此很容易比较。字符串可以是任何东西
switch
语句通常在底层编译中实现为,这仅在有限的值集合中才可能实现。C#可以打开字符串,但它会导致性能下降,因为无法使用跳转表
Java 7和更高版本支持相同的特性。您可能在交换机情况下错误地使用了枚举。与上面的CoolBeans示例相比。。您可能正在执行以下操作:
switch(day) {
case Day.MONDAY:
// Something..
break;
case Day.FRIDAY:
// Something friday
break;
}
确保使用实际的枚举值,而不是EnumType.EnumValue
Eclipse指出了这个错误。您可能在交换机案例中错误地使用了枚举。与上面的CoolBeans示例相比。。您可能正在执行以下操作:
switch(day) {
case Day.MONDAY:
// Something..
break;
case Day.FRIDAY:
// Something friday
break;
}
确保使用实际的枚举值,而不是EnumType.EnumValue
Eclipse指出了这个错误。实际上,您可以在Java中使用带字符串的switch语句…不幸的是,这是Java 7的一个新功能,而且大多数人还没有使用Java 7,因为它太新了。实际上,您可以在Java中使用带字符串的switch语句…不幸的是,这是Java 7的一个新功能,大多数人还没有使用Java 7,因为它太新了。你实际上可以打开枚举
s,但在Java 7之前你不能打开字符串
s。可以考虑使用java <代码> EnUM< /Cult> s而不是显式<代码>开关< /> >使用多态方法。请注意,enum
s在Java中是对象,而不仅仅像在C/C++中一样是int
s的符号。您可以在枚举
类型上拥有一个方法,然后不必编写开关
,只需调用该方法-一行代码:done
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();
}
实际上,您可以在enum
s上切换
,但在Java 7之前,您不能在String
s上切换
。可以考虑使用java <代码> EnUM< /Cult> s而不是显式<代码>开关< /> >使用多态方法。请注意,enum
s在Java中是对象,而不仅仅像在C/C++中一样是int
s的符号。您可以在枚举
类型上拥有一个方法,然后不必编写开关
,只需调用该方法-一行代码:done
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();
}
向我们展示您的非工作枚举开关代码。为什么要复制标志,看看标题有多精确,对于新用户来说很容易找到。您可以看看这篇文章,看看它是如何做到的:“它似乎足够简单,可以生成一些方便的代码。”是的,Java很简单,但方便的Java不是!执行switch语句的真正简单方法就像在C中一样,Java就是这样做的!原则上,Java不像C语言那样方便。这就是Java的生活方式。如果你真的想用Java编写代码,你就必须处理这种心态。之所以会出现这种错误,是因为你试图键入enumName的大小写。你必须键入switch(enumVariable){case Value:}显示你的非工作enum开关代码。为什么要重复标记,看看标题有多精确,对于新用户来说很容易找到。你可以看看这篇文章,看看它是如何做到的:“它似乎足够简单,并且可以生成一些方便的代码。”是的,Java很简单,但方便的Java却不是!执行switch语句的真正简单方法就像在C中一样,Java就是这样做的!原则上,Java不像C语言那样方便。这就是Java的生活方式。如果你真的想用Java编写代码,你就必须处理这种心态。之所以会出现这种错误,是因为你试图在enumName.Value中键入case。你必须键入switch(enumVariable){case Value:}这种方法的一个优点是根本不可能得到某些类型的错误。你不能错过一个切换案例(你可以错误地实现一个特定常量的方法,但是没有什么可以完全阻止这种情况发生!)。没有需要担心的“默认”开关。此外,我还看到过将枚举常量放入数组,然后将索引放入数组的代码-这就打开了数组索引越界异常的可能性-只需使用枚举!Java枚举非常强大。了解有关它们的所有信息,以便有效地使用它们。还要注意,对于特定方法,如果您有多个枚举常量都具有相同的行为(例如@CoolBeans days of the week示例,其中周末具有相同的行为,而工作日周二到周四也具有相同的行为),您可以简单地将共享代码收集到一个enum方法中,该方法不会被每个常量(final protected)覆盖,然后调用