switch语句中需要的常量表达式

时间:2016-10-05 09:40:26

标签: java android switch-statement

我想在switch语句中使用全局常量。我以这种方式在一个名为ColorManager的Singleton中写了常量

public static final int blue = 3;
public static final int red = 5;
public static final int black = 7;

在我的HomeActivity我写了这段代码

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: {
        }
    }
}

但是我在switch语句中遇到错误:

  

需要常量表达

这些值是最终的,所以我不明白为什么会出现这个错误。我发现了类似的主题,但在所有情况下,属性都没有被声明为最终属性。

3 个答案:

答案 0 :(得分:2)

如果静态访问静态最终字段,它将被编译;例如case ColorManager.blue:。如果您尝试从变量cm访问,那么您将阻止编译器将它们识别为编译时常量。

答案 1 :(得分:0)

使用ClassName.variable即ColorManager.red

答案 2 :(得分:0)

试试此代码

public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {

    switch (requestCode) {
        case ColorManager.blue: {
        }
        case ColorManager.red: {
        }
        case ColorManager.black: {
        }
    }
}