所以,我正在处理这个类,它有几个静态常量:
public abstract class Foo {
...
public static final int BAR;
public static final int BAZ;
public static final int BAM;
...
}
然后,我想要一种根据常量获得相关字符串的方法:
public static String lookup(int constant) {
switch (constant) {
case Foo.BAR: return "bar";
case Foo.BAZ: return "baz";
case Foo.BAM: return "bam";
default: return "unknown";
}
}
但是,当我编译时,我在3个case标签上都得到了一个constant expression required
错误。
我知道编译器需要在编译时知道表达式才能编译开关,但是为什么Foo.BA_
不是常量?
发布于 2015-02-26 05:16:47
我在Android上得到了这个错误,我的解决方案是使用:
public static final int TAKE_PICTURE = 1;
而不是
public static int TAKE_PICTURE = 1;
发布于 2010-09-30 11:13:49
因为这些不是编译时间常量。考虑以下有效代码:
public static final int BAR = new Random().nextInt();
只有在运行时才能知道BAR
的值。
发布于 2011-07-21 22:27:19
您可以使用如下示例中的枚举:
public class MainClass {
enum Choice { Choice1, Choice2, Choice3 }
public static void main(String[] args) {
Choice ch = Choice.Choice1;
switch(ch) {
case Choice1:
System.out.println("Choice1 selected");
break;
case Choice2:
System.out.println("Choice2 selected");
break;
case Choice3:
System.out.println("Choice3 selected");
break;
}
}
}
https://stackoverflow.com/questions/3827393
复制相似问题