Java как получить доступ к внутреннему классу enum
public class Constant {
......
public enum Status {
ERROR,
WARNING,
NORMAL
}
......
}
После компиляции я получил файл класса с именем Constant $Status.class. Вопрос в том, как я могу получить доступ к значению перечисления. Например, я хочу получить строковое представление состояния ОШИБКИ.
Ответы
Ответ 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
. Аналогично, он доступен в том же пакете в случае отсутствия модификатора (по умолчанию).