Способ разделения слов в именах констант не является пробелом:
, который недопустим для идентификаторов, но подчеркивание: _
, то есть:
RANKINGS_ASC, RANKINGS_DESC
Это верно для значений перечисления, таких какдля final static
имен констант поля.
Команде необходимо указывать пробел между двумя терминами при вызове в программе, который называется в точности как «ranks asc».
Значения перечисления являются постоянными значениями типа компиляции.Они представляют логическое имя перечисления, они не предназначены для точного представления текстовых значений, введенных клиентами приложения.В некоторых случаях они могут, но не могут в некоторых других случаях, и это приемлемо.
Чтобы выполнить ваше требование, вы можете определить перечисление с помощью конструктора параметров, где параметр представляет текстовые команды, введенные клиентом.
Но теперь, если для этих двух случаев требуется единственное сопоставление, просто замените пробел подчеркиванием и используйте Enum.valueOf(String)
, чтобы получить перечисление, например:
Command command = Commands.valueOf(clientCommand.replace(" ", "_"))
Обратите внимание, что вы можете добавить параметр дляконструктор emum, как показано в Babyburger (miam), но он имеет смысл только в том случае, если параметр имеет смысл для всех значений enum, потому что вы хотите управлять им единообразно.Если это не так, вам, вероятно, не следует использовать этот способ.