【问题标题】:Java how to access inner enum classJava如何访问内部枚举类
【发布时间】:2011-06-08 15:02:05
【问题描述】:
public class Constant {

  ......

  public enum Status {
    ERROR,
    WARNING,
    NORMAL
  }

  ......

}

编译后我得到了一个名为Constant$Status.class的类文件。问题是,我如何访问枚举值。例如,我想获取 ERROR 状态的字符串表示形式。

【问题讨论】:

  • Constant.Status status = Constant.Status.NORMAL; 不起作用?

标签: java enums


【解决方案1】:

您可以在其他地方访问它,例如

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();

【讨论】:

  • 如果枚举是类的成员,则它是隐式静态的 - 不需要 static 关键字。
【解决方案2】:

在你的代码中做:

Constant.Status.ERROR.toString();

【讨论】:

    【解决方案3】:

    由于之前没有提到这一点,所以在原始问题中,enum 具有public 访问修饰符,这意味着我们应该能够在任何地方执行Constant.Status.ERROR.toString()。如果它被设置为private,它将只对类可用:Constant。同样,在没有修饰符的情况下,它可以在同一个包中访问(默认)。

    【讨论】:

    • 什么'外部枚举'?
    猜你喜欢
    • 2018-01-22
    • 2014-10-30
    • 1970-01-01
    • 2012-01-17
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    相关资源
    最近更新 更多