在java开关表达式中使用kotlin常量

我最近一直在研究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必须是常量,但我不知道,我怎样才能使它们比现在更加稳定。 所以我的问题是:如何使用java swicth语句中的kotlin常量?

我正在使用jdk8和kotlin M14。

2 Solutions collect form web for “在java开关表达式中使用kotlin常量”

M14改变状态“自M14以来,我们需要用const来给Kotlin常量加上前缀,以便能够在注释中使用它们,并将其视为来自Java的字段”

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

IntelliJ仍然显示在Java情况下的错误,但它编译和工作。

一个更简单的解决方案是:在“Kotlin文件”中声明常量而不是“Kotlin类”,它基本上是在类范围之外声明常量, 并且可以在适当的导入的任何地方引用它们

 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 } 
  • 删除在Kotlin中如何工作?
  • 使用泛型的类型化类型的构造函数
  • AssertionError:根包必须被初始化
  • 即使使用noarg插件,也没有使用Kotlin的JPA实体的默认构造函数
  • 在Kotlin中IntArray与数组<Int>
  • Kotlin anko onclick是未解决的参考
  • Kotlin使用Java回调接口
  • Android不确定ProgressBar不显示
  • TornadoFx ItemViewModel项目为空
  • 无法上传Android中的文件,并且没有错误的详细信息
  • kotlin数据类+ beanvalidationjsr 303
  • Kotlin language will be the best programming language for Android.