小编Nej*_*ejc的帖子

切换语句并在静态块中初始化最终的静态变量

对于我的项目,我有很多对象分为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 problemcase 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)

java static final switch-statement

5
推荐指数
1
解决办法
3120
查看次数

标签 统计

final ×1

java ×1

static ×1

switch-statement ×1