Java switch语句中需要常量表达式
我想在switch语句中使用全局常量。我以这种方式在名为Java switch语句中需要常量表达式,java,android,switch-statement,Java,Android,Switch Statement,我想在switch语句中使用全局常量。我以这种方式在名为ColorManager的单例中编写了常量 public static final int blue = 3; public static final int red = 5; public static final int black = 7; 在我的家庭活动中我编写了这段代码 public void onRequestPermissionsResult(int requestCode, String permissions[], in
ColorManager
的单例中编写了常量
public static final int blue = 3;
public static final int red = 5;
public static final int black = 7;
在我的家庭活动中
我编写了这段代码
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
ColorManager cm = ColorManager.getInstance(this);
switch (requestCode) {
case cm.blue: {
}
case cm.red: {
}
case cm.black: {
}
}
}
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case ColorManager.blue: {
}
case ColorManager.red: {
}
case ColorManager.black: {
}
}
}
但是我在switch语句中得到一个错误:
需要常量表达式
这些值是最终的,所以是常量,我不明白为什么会出现这个错误。我发现了类似的主题,但在所有情况下,属性都没有声明为final。如果静态访问静态final字段,它将编译;e、 g.
外壳颜色管理器。蓝色:
。如果您尝试从变量cm
访问then,则会阻止编译器将其识别为编译时常量。如果您静态访问静态最终字段,它将编译;e、 g.外壳颜色管理器。蓝色:
。如果尝试从变量cm
访问then,则会阻止编译器将其识别为编译时常量。使用ClassName.variable即ColorManager.red使用ClassName.variable即ColorManager.red尝试此代码
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
ColorManager cm = ColorManager.getInstance(this);
switch (requestCode) {
case cm.blue: {
}
case cm.red: {
}
case cm.black: {
}
}
}
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case ColorManager.blue: {
}
case ColorManager.red: {
}
case ColorManager.black: {
}
}
}
试试这个代码
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
ColorManager cm = ColorManager.getInstance(this);
switch (requestCode) {
case cm.blue: {
}
case cm.red: {
}
case cm.black: {
}
}
}
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case ColorManager.blue: {
}
case ColorManager.red: {
}
case ColorManager.black: {
}
}
}
使用
ColorManager.blue
等等,而不是cm.blue
java中没有常量关键字。Final并不意味着要注意静态字段,也不需要在case
块周围加上花括号({
和}
)。您应该使用break
或退出案例返回
。如果不这样做,将执行下一个case
下的命令。使用ColorManager.blue
等等,而不是cm.blue
java中没有常量关键字。Final并不意味着要注意静态字段,也不需要在case
块周围加上花括号({
和}
)。您应该使用break
或退出案例返回
。如果不这样做,将执行下一个案例下的命令。