Подтвердить что ты не робот

Java как получить доступ к внутреннему классу enum

public class Constant {

  ......

  public enum Status {
    ERROR,
    WARNING,
    NORMAL
  }

  ......

}

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

4b9b3361

Ответ 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();

Ответ 2

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

Constant.Status.ERROR.toString();

Ответ 3

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