【发布时间】:2021-09-03 19:00:03
【问题描述】:
final int a=2;
final int b;
b=3;
switch(num){
case a : // Legal
case b : //Illegal
}
case a是合法,但case b是非法。
谁能解释一下原因?
【问题讨论】:
-
您不能重新分配最终变量。要么给 b 分配一个数字,要么让它不是最终的。
-
这里的编译错误是什么?
-
请注意
b未初始化。我们不会在b=3中更改它的值——它是初始化。这是合法的。这里的问题是switch不知道这一点。大致要求标签看起来像final x = ....。 -
找到了一个不错的旧答案的链接stackoverflow.com/a/3827424/12302982
-
局部变量为
final时重新赋值确实是非法的。但问题是b没有被重新分配——它只是被分配了。 Here is an example 这表明使用单独的语句声明final变量并分配 它非常好。
标签: java switch-statement