在Java中,是否可以使用方法/构造函数的参数作为switch语句,case常量?

Joh*_*oth 5 java switch-statement

在切换的情况下,我注意到当我尝试使用参数作为case常量时,我​​得到一个编译错误.但我可以使用字段/本地变量.

是否真的不可能将参数用作案例常量?或者有例外(如果有,请提供一个例子)?

例:

final int field = 0;
void method( final int parameter) {
    switch( 3) {
        case field: // ALLOWED
        case parameter; // NOT ALLOWED
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试直接使用该参数.我对在本地var中保存参数值的解决方案不感兴趣.

thk*_*ala 3

与 C 和 C++ 非常相似,Java 只允许编译时常量作为case.

初始化 类成员的值final可以在编译时确定并且不能更改。final方法参数在每次方法调用时可以具有不同的值。

为了与方法参数进行比较,您可能必须依靠古老的if...else....

编辑:

顺便说一句,请注意上面对初始化的强调。声明中没有初始化程序的类final成员也不能用作值case