@Benoit Я не думаю, что это обман: речь идет об установке только первого значения и увеличении оттуда, речь идет о настройке всех значений. Но определенно связано.
Вы не можете использовать конструктор перечисления в коде. EXIT_CODE.Aи EXIT_CODE.Bявляются единственными экземплярами, которые когда-либо будут существовать.
будет ли это работать с gson и преобразованием из json.
Zapnologica
4
Вы также можете объявить переменную «public final int numVal» и просто обращаться к ней напрямую как EXIT_CODE.A.numVal (я предпочитаю имя «значение») без необходимости использования метода доступа. Поскольку он окончательный, его можно установить только в конструкторе. ИМО это приводит к немного более чистому коду, но я полагаю, это в основном вопрос предпочтений. Использование последней переменной позволяет сэкономить одно определение метода.
Почему ваш публичный статический void main (String [] args) находится внутри самого перечисления?
Игорь Ганапольский
3
@IgorGanapolsky Думаю, чтобы сделать пример самодостаточным!
mat_boy
2
@IgorGanapolsky: потому что это так в официальных документах (перейдите по ссылке Yes )
serv-inc
@ user1587329 Интересно, я думаю, это только для целей тестирования. Я не вижу способа использовать это в производственном выпуске кода ...
Игорь Ганапольский 06
12
Предполагая, что EXIT_CODE относится к System . exit(exit_code), вы можете сделать
enumExitCode{
NORMAL_SHUTDOWN (0), EMERGENCY_SHUTDOWN (10), OUT_OF_MEMORY (20), WHATEVER (30);privateint value ;ExitCode(int value ){this. value = value ;}publicvoid exit (){System. exit ( value );}}
Затем вы можете поместить следующее в соответствующие места своего кода
Если вы ищете способ сгруппировать константы в классе, вы можете использовать статический внутренний класс:
publicclassOuterClass{publicvoid exit(boolean isTrue){if(isTrue){System.exit(ExitCode.A);}else{System.exit(ExitCode.B);}}publicstaticclassExitCode{publicstaticfinalint A =203;publicstaticfinalint B =204;}}
Ответы:
источник
EXIT_CODE.A
иEXIT_CODE.B
являются единственными экземплярами, которые когда-либо будут существовать.Да , и еще несколько примеров из документации:
источник
Предполагая, что EXIT_CODE относится к
System . exit
(exit_code), вы можете сделатьЗатем вы можете поместить следующее в соответствующие места своего кода
ExitCode . NORMAL_SHUTDOWN . exit ( ) '
источник
Расширяя ответ Bhesh Gurung для присвоения значений, вы можете добавить явный метод для установки значения
Из вызывающего приложения
// Теперь у вас есть действительное перечисление
[Невозможно прокомментировать свой ответ, поэтому размещаю его отдельно]
источник
Если вы ищете способ сгруппировать константы в классе, вы можете использовать статический внутренний класс:
источник