为什么我不能在每个具有相同名称的情况下创建变量。例如,从下面的代码中,case 3
它会抱怨String name
已经存在 - 但为什么呢? Case 1
从来没有,也永远不会被调用。重新实例化开关盒中的变量
我不想从switch-case
中提取出定义。 那么为什么要使用if
语句来定义每种情况下的相同名称,但是在switch-case
中却没有?
下面是一个简单的Java代码与开关壳体:
int type = 3;
switch (type) {
case 1:
String name = (String) respone.get("name");
user.setName(name);
break;
case 2:
String surname = (String) respone.get("surname");
user.setSurname(surname);
break;
case 3:
String name = (String) respone.get("name");
user.clearName(name);
break;
default:
...
}
答案可能是“因为”。我猜测这是因为''case:'块在编译器方面并不是真正的块 - 它们是在一个'switch'块中得到的标签。所以局部变量的范围就是那个开关块。 – millimoose 2013-03-20 16:06:13
你可以在你调用的函数中直接放置铸造的'(String)respone.get(“foo”)'... – LaGrandMere 2013-03-20 16:07:12
一个很好的问题,但已经回答了很多次,例如重复:http:// stackoverflow。 com/a/3894215/1081849 – sbk 2013-03-20 16:08:23