2011-06-08 80 views
23
public class Constant { 

    ...... 

    public enum Status { 
    ERROR, 
    WARNING, 
    NORMAL 
    } 

    ...... 

} 

編譯後我得到了一個名爲的類文件常量$ Status.class。問題是,我如何訪問枚舉值。例如,我想獲得錯誤狀態的字符串表示。Java如何訪問內部枚舉類

+0

'Constant.Status狀態= Constant.Status.NORMAL;'不起作用? – 2011-06-08 15:06:24

回答

33

您可以在其他地方訪問它像

import package.name.Constant; 
//... 
Constant.Status foo = Constant.Status.ERROR; 

,或者

import package.name.Constant; 
import package.name.Constant.Status; 
//... 
Status foo = Status.ERROR; 

要得到任何enum元素的聲明的名稱,使用Enum#name()

Status foo = ...; 
String fooName = foo.name(); 
+12

如果枚舉是類的成員,則它是隱式靜態的 - 不需要static關鍵字。 – planetjones 2011-06-08 15:07:15

+1

哦!我不知道,謝謝。固定。 – 2011-06-08 15:10:06

6

在你的代碼只是做:

Constant.Status.ERROR.toString(); 
1

,因爲這是不是在原來的問題之前所提到的,enumpublic訪問修飾符,這意味着我們應該能夠從任何地方做Constant.Status.ERROR.toString()。如果它設置爲private,它將只能用於該類:Constant。同樣,如果沒有修飾符(默認),它可以在同一個包中訪問。

+0

什麼是「外部枚舉」? – EJP 2016-08-11 01:11:27

+0

感謝編輯成「班級」! – AaCodes 2016-08-11 02:01:53