我最近一直在研究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。
答案 0 :(得分:24)
M14改变状态"从M14开始,我们需要在const上为Kotlin常量加上前缀,以便能够在注释中使用它们,并将其视为Java中的字段"
class Service {
companion object {
const val CONSTANT_ONE = 1
const val CONSTANT_TWO = 2
}
}
IntelliJ仍然在Java案例中显示错误,但它编译并运行。
答案 1 :(得分:0)
更简单的解决方案是: 声明'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
}