为什么不同的 case body 不会自动在它们自己的范围内?例如,如果我要这样做:
switch(condition) {
case CONDITION_ONE:
int account = 27373;
case CONDITION_TWO:
// account var not needed here
case CONDITION_THREE:
// account var not needed here
case CONDITION_FOUR:
int account = 90384;
}
编译器会提示局部变量重新定义。我知道我可以这样做:
switch(condition) {
case CONDITION_ONE: {
int account = 27373;
}
case CONDITION_TWO: {
// account var not needed here
}
case CONDITION_THREE: {
// account var not needed here
}
case CONDITION_FOUR: {
int account = 90384;
}
}
在要执行的每组语句周围放置一个 block ,以将每个 account
变量放在其自己的范围内。但为什么语言不为我做这件事?
为什么要在 CONDITION_ONE
的主体中声明一个局部变量,然后在 CONDITION_TWO
的主体中使用它?这似乎是一个糟糕的想法,应该明确禁止,而不是默许。
最佳答案
你为什么想要这个?如果每个 case block 都需要一个新的范围,那么您在 case block 中做的太多了。把它推到一个方法上。
关于java - 为什么不同的案例条件体不在不同的范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3585073/