在切换的情况下,我注意到当我尝试使用参数作为case常量时,我得到一个编译错误。但我可以使用字段/本地变量。
是否真的不可能将参数用作案例常量?或者有例外(如果有,请提供一个例子)?
示例:
final int field = 0;
void method( final int parameter) {
switch( 3) {
case field: // ALLOWED
case parameter; // NOT ALLOWED
}
}
我正在尝试直接使用该参数。我对在本地var中保存参数值的解决方案不感兴趣。
答案 0 :(得分:3)
与C和C ++非常相似,Java只允许编译时常量作为case
的值。
初始化 final
类成员的值可以在编译时确定,不能更改。 final
方法参数在每次方法调用时都可以有不同的值。
要与方法参数进行比较,您可能不得不依赖于古老的if...else...
。
编辑:
顺便说一下,请注意上面初始化的重点。声明中没有初始化者的final
类成员也不能用作case
值。
答案 1 :(得分:2)
java只能使用case
部分