爲什麼我不能在每個具有相同名稱的情況下創建變量。例如,從下面的代碼中,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