问题
在switch的不同case中定义同一个变量会报错(如下),这是什么原因,如何解决呢?
switch (channel) {
case "A":
ABC abc = new ABC("A");
break;
case "B":
ABC abc = new ABC("B");
break;
default:
return;
}
原因
在括号"{}"中定义的对象,作用域在这对括号里面。在上面的代码样例中,abc的作用域在整个switch语句中,不只是在具体的某个case语句中,所以重复定义相同变量,会导致报错。
解决
在case中增加括号"{}",改变对象的作用域。
switch (channel) {
case "A": {
ABC abc = new ABC("A");
}
break;
case "B": {
ABC abc = new ABC("B");
}
break;
default:
return;
}