Использование констант 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.

Solutions Collecting From Web of "Использование констант kotlin в выражении java switch"

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 }