Intereting Posts
Недавнее приложение для Android Текстовый вид с разными цветными текстами в xml-коде Как получить правильные координаты X, Y для DragEvent.ACTION_DROP Android-java- Как отсортировать список объектов по определенному значению внутри объекта Java.lang.IllegalStateException: ArrayAdapter требует, чтобы идентификатор ресурса был TextView Неверная ошибка сертификата и httpclient на Android Android AppCompat SearchView EditText пропускает нижнюю строку на pre-lollipop Как получить различия между двумя объектами json с помощью GSON? Как остановить мягкую клавиатуру, отображающуюся автоматически при изменении фокуса (событие OnStart) Android: анимировать альфа одного контура на холсте Всегда показывать полный заголовок в ActionBar Google Play тестирует биллинг в приложении с открытой бета-версией Как настроить / вычислить текстурбуфер в glTexCoordPointer при импорте из OBJ-файла Фрагменты Android перекрываются после поворота экрана Веб-просмотр Кордовы внутри Android Фрагмент на Кордове 4.0

Определяющие константы, такие как #define, которые могут использоваться в операторах switch в java

Я хотел бы определить некоторые константы, такие как #define myXYZ 1 поэтому я также могу использовать их в операторах switch .

Когда я часто предлагаю

 public static final Integer myXYZ = 1; 

а также

 case Constants.myXYZ: 

Я получаю сообщение компилятора, что case expression must be constant

Какой был бы лучший способ разрешить это?

Благодаря!

Просто измените его на int и все должно быть хорошо:

 public static final int myXYZ = 1; 

Это связано с тем, что значение case должно быть постоянным выражением или именем перечисления. Из раздела 15.28 JLS (постоянные выражения):

Постоянное выражение времени компиляции представляет собой выражение, обозначающее значение примитивного типа или String, которое не завершается внезапно и составлено с использованием только следующих […]

Поэтому выражение типа int может быть константным выражением, но выражение типа Integer не может.

Если это набор значений, который имеет смысл как самостоятельное понятие, то перечислимость может иметь больше смысла.

Использовать int :

 public static final int myXYZ = 1; 

Или использовать константы enum .

Если вы хотите переключиться между ними, вероятно, лучше всего его использовать, чтобы вместо этого использовать перечисление