2011-01-31 35 views
5

在開關的情況下,我注意到當我嘗試使用一個參數作爲一個case常量時,我​​得到一個編譯錯誤。但我可以使用字段/局部變量。在Java中,是否有可能使用方法/構造函數的參數作爲switch語句,case常量?

真的不可能使用參數作爲一個常量嗎?或者是否有例外(如果是這樣,請舉例說明)?

例子:

final int field = 0; 
void method(final int parameter) { 
    switch(3) { 
     case field: // ALLOWED 
     case parameter; // NOT ALLOWED 
    } 
} 

我想直接使用該參數。我對將參數的值保存在本地變量中的解決方案不感興趣。

回答

3

就像C和C++只使用常量,爪哇只允許編譯時常數作爲case的值。

初始化的值final類成員可以在編譯時確定並且不能更改。方法參數在每個方法調用中可以有不同的值。

爲了與方法參數進行比較,您可能需要回溯到老舊的if...else...

編輯:

順便說一句,注意強調初始化以上。 A final沒有聲明者的類成員也不能用作case值。

相關問題