代码如下:-
private static final String ABC;
private void xyz(){
switch(ENUMImpl.getCountry()){ //** ENUMImpl is an ENUM class with a method getCountry() which returns the ENUM value
case COUNTRY1:
ABC = "TMZ"; // The final field ABC cannot be assigned :: Remove final modifier of ABC
break;
default:
ABC = "NA";
break;
}
}
您的字段是static
和final
。
这意味着该字段位于类
级别,而不是实例级别。并且该字段必须分配一次--对于静态
字段,在类
初始化期间分配很多字段。
没有什么能阻止你做:
public MyClass() {
xyz();
xyz();
}
您需要做一些类似的事情:
private static String xyz(){
switch(ENUMImpl.getCountry()) {
case COUNTRY1:
return "TMZ";
default:
return "NA";
}
}
static {
ABC = xyz();
}
注:
enumimpl
对任何东西来说都是一个可怕的名称。它显然是一个枚举
,就像它声明的那样,它显然是一个实现,否则它就不存在了。因此,这完全没有告诉您它的目的。首先,我要说明我对C#中的枚举更加熟悉,而Java中的枚举似乎是一团糟。 正如您所看到的,我试图在下一个示例中使用switch语句@enums,但无论我在做什么,我总是得到一个错误。 我收到的错误是: 限定的大小写标签必须替换为限定的枚举常量 问题是我很理解这个错误,但我不能只写VALUE_A,因为枚举位于另一个子类中。有没有办法解决这个问题?为什么会发生在Java?
问题内容: 对于建议抛出异常的人: 抛出异常不会给我编译时错误,而是给我运行时错误。我知道我会抛出异常,我宁愿在编译时死掉,也不愿在运行时死掉。 首先,我正在使用Eclipse 3.4。 我有一个数据模型,它的mode属性是Enum。 我目前正在编写此模型的视图,并且我有代码 我收到一个错误“此方法必须返回类型为java.awt.Color的结果”,因为我没有默认大小写,并且在函数末尾没有返回xx
本文向大家介绍Java语言中枚举能使用switch语句吗?,包括了Java语言中枚举能使用switch语句吗?的使用技巧和注意事项,需要的朋友参考一下 Java中的枚举(enum)是一种存储一组常量值的数据类型。您可以使用枚举来存储固定值,例如一周中的天,一年中的月等。 您还可以使用自定义值定义一个枚举来声明常量。但是您需要一个实例变量,一个构造函数和一个getter方法来返回值。 与switch
我想我还没有在Java中得到的概念。 我尝试将字符串与枚举中的特殊字符相比较。 但话说回来: 我收到一个编译器错误: 我做错了什么?
我有两种枚举类型(并希望用户能够添加自己的)。 如果我不在接受枚举类型的方法中使用枚举属性,这就很好。 但是,如果我希望模板E被识别为一个枚举(在这里的开关中使用),我会得到错误“不能打开类型E的值”(在Eclipse中,开关(E)中的“E”带有红色下划线) 我对擦除有一点了解,它在编译时擦除了关于模板的所有信息,所以这就是问题所在。但是我尝试传入clazz类或者实现一个接口都没有成功。对此有什么
以下代码不能用javac 1.8.0_144和ECJ编译: > 未声明为最终。 在赋值表达式(§15.26)中,它从不作为左手边出现。(请注意,包含 初始值设定项的局部变量声明符不是赋值表达式。) 它从不作为前缀或后缀递增或递减运算符的操作数出现(§15.14,§15.15)。 它从不作为前缀或后缀递增或递减运算符的操作数出现。 方法、构造函数、λ或异常参数(§8.4.1,§8.8.1,§9.4,