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

时间:2011-01-31 16:27:14

标签: java switch-statement

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

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

示例:

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

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

2 个答案:

答案 0 :(得分:3)

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

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

要与方法参数进行比较,您可能不得不依赖于古老的if...else...

编辑:

顺便说一下,请注意上面初始化的重点。声明中没有初始化者的final类成员也不能用作case值。

答案 1 :(得分:2)

java只能使用case部分

中的常量