2011-06-08 1438 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