-1
switch語句的作用之一是它們接受常量作爲參數,但是觀察以下代碼我們可以清楚地注意到編譯器在標記行以case常量作爲參數的switch語句does not compile
處報告的編譯錯誤public void testSwitch(final int y){
final int x= 0;
int tester = 9;
switch(tester){
case x:
break;
case y://compilation error here case constant must be constant expression
break;
}
}
這與所謂的「編譯時間」常量有關嗎?
它被標記爲最終犯規,使其成爲一個常數添加下列行也會使編譯器抱怨Y = 10?; –
我認爲問題在於'y'可以在調用之間改變值,所以在這個意義上它不是'常量表達式'。你需要那些不會改變的東西,即使是在通話之間。 – ray
y不是一個常量表達式,因爲您可以反覆調用任何您想要的值。 – pvg