我想在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语句中遇到错误:
需要常量表达
这些值是最终的,所以我不明白为什么会出现这个错误。我发现了类似的主题,但在所有情况下,属性都没有被声明为最终属性。
答案 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: {
}
}
}