Java, как получить доступ к внутреннему классу enum - PullRequest
27 голосов
/ 08 июня 2011
public class Constant {

  ......

  public enum Status {
    ERROR,
    WARNING,
    NORMAL
  }

  ......

}

После компиляции я получил файл класса с именем Константа $ Status.class .Вопрос в том, как я могу получить доступ к значению enum.Например, я хочу получить строковое представление статуса ERROR.

Ответы [ 3 ]

38 голосов
/ 08 июня 2011

Вы сможете получить к нему доступ в другом месте, как

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();
6 голосов
/ 08 июня 2011

В вашем коде просто сделайте:

Constant.Status.ERROR.toString();
1 голос
/ 11 августа 2016

Поскольку это не упоминалось ранее, в исходном вопросе enum имеет модификатор доступа public, что означает, что мы должны иметь возможность Constant.Status.ERROR.toString() откуда угодно.Если бы он был установлен на private, он был бы доступен только для класса: Constant.Аналогично, он доступен в том же пакете в случае отсутствия модификатора (по умолчанию).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...