Intereting Posts
Ошибка при переходе с Java на Kotlin. Ошибка – org.gradle.api.tasks.TaskExecutionException: выполнение не выполнено для задачи: app: compileDebugKotlin ' Класс отсутствует конструктор без аргументов, но я предоставил конструктор без аргументов ручка onKeyDown с использованием RxAndroid Kotlin Android для печати на консоль Типы подстановок Java против звездной проекции Котлина Kotlin: Как вставить список объектов в комнату? findViewById ClassCastExcpetion Преобразует ли файл Kotlin в java, добавив к нему java-код и вернувшись обратно в Kotlin так же, как добавление кода непосредственно в файл Kotlin? Kotlin приостанавливает функцию рекурсивного вызова Этот тип имеет конструктор и должен быть инициализирован здесь – Kotlin Конфликт Android и просмотрщик Android Доступ к свойствам закрывающего класса Связывание данных с Kotlin приводит к ресурсу $ NotFoundException Как обрабатывать пустой параметр в Котлине? Это применимо для написания драйвера JDBC в Котлине?

Использование констант kotlin в выражении java switch

Недавно я изучал Kotlin lang и его взаимодействие с java. У меня есть код java:

public void select(int code) { switch code { case Service.CONSTANT_ONE: break; case Service.CONSTANT_TWO: break; default: break; } } 

Где Service.kt написано следующим образом:

 class Service { companion object { val CONSTANT_ONE = 1 val CONSTANT_TWO = 2 } } 

Компилятор Java говорит, что CONSTANT_ONE и CONSTANT_TWO должны быть константами, но я не знаю, как я могу сделать их более постоянными, чем сейчас. Поэтому мой вопрос: как использовать константы из kotlin в java swicth statement?

Я использую jdk8 и kotlin M14.

M14 изменяет состояние «Поскольку M14 нам нужно префикс констант Котлина с константой, чтобы иметь возможность использовать их в аннотациях и видеть как поля из Java»

 class Service { companion object { const val CONSTANT_ONE = 1 const val CONSTANT_TWO = 2 } } 

IntelliJ все еще показывает мне ошибку в случае Java, но она компилируется и работает.

Еще более простым решением было бы: объявить константы в «файле Kotlin» вместо «Kotlin class», который в основном объявляет константы вне класса, и на них можно ссылаться где угодно с надлежащим импортом.

 const val CONSTANT_ONE = 1 const val CONSTANT_TWO = 2 class Service { } 

Или если вы хотите что-то похожее на private static final int CONSTANT_ONE = 1;

Вы можете объявить константы приватными в файле Kotlin, и к ним могут обращаться только классы внутри одного файла.

 private const val CONSTANT_ONE = 1 class A{ // can access CONSTANT_ONE } class B{ // can access CONSTANT_ONE }