对于我的项目,我有很多对象分为10个类.每个对象可以执行一些必须事先注册的操作(每个类仅执行一次操作的注册).为每个类定义的操作表示为public final static
整数.我想在运行时动态分配操作的ID(每个类的操作数目前约为20,数字将增加).
问题出现了,当执行操作并且我必须找到正在执行的操作时(我使用switch语句).
这是一个工作代码的简单示例:
public class Test {
final static int foo = 8;
final static int bar = 10;
public static void main(String[] args)
{
int x=10;
switch(x)
{
case foo:
System.out.println("FOO");
break;
case bar:
System.out.println("BAR");
break;
default:
System.out.println("PROBLEM");
}
}
}
Run Code Online (Sandbox Code Playgroud)
此代码通常编译和显示BAR
.
但是,这稍微变换代码就会产生Unresolved compilation problem
用case expressions must be constant expressions
.
public class Test {
final static int foo;
final static int bar;
static
{
foo=8;
bar=10;
}
public static …
Run Code Online (Sandbox Code Playgroud)