有什麼方法可以將枚舉轉換爲常量表達式? 我希望我的開關操作,以枚舉值中進行選擇,但我得到一個編譯錯誤「CASE表達式必須是常量表達式」,所以我試圖將它聲明一個變量:Enum的常量表達式
final int REG = MyEnum.REG.getIndex().intValue();
switch (service.getIndex()) {
case REG:
但我仍然得到相同的錯誤。根據Oracle的文檔http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.28
編譯時常量表達式是一個表達式表示原始類型或字符串的值 不突然完成並是 僅使用由下列:
•字面原始類型和文字類型字符串
所以它不工作,因爲我沒有使用文字。我想我將不得不聲明它:
final int REG = 8;
但它將是更好的鏈接到枚舉。有沒有辦法做到這一點?
編輯
原來我不需要使用任何最終的變量。它就這麼簡單:
switch (service) {
case REG:
直到我看到安德烈的評論,我纔沒有想到它。感謝您的回答。
我假定'service.getIndex()''返回整數',對嗎?你可以修改它,讓它返回你的枚舉? – 2013-05-08 10:35:25
直到Java 1.6,你不能在'switch-case'中使用'String',但你可以在Java 7中使用它。FYI – Joshi 2013-05-08 10:37:21