在 java switch 表达式中使用 kotlin 常量
Using kotlin constants in java switch expression
我最近一直在研究 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。
M14 改变状态 "Since M14 we need to prefix Kotlin constants with const to be able to use them in annotations and see as fields from Java"
class Service {
companion object {
const val CONSTANT_ONE = 1
const val CONSTANT_TWO = 2
}
}
IntelliJ 仍然显示 Java 情况下的错误,但它可以编译并运行。
一个更简单的解决方案是:
在 'Kotlin file' 而不是 'Kotlin class' 中声明常量,这基本上是在 class 范围之外声明常量,并且 它们可以在任何地方引用 适当的进口。
const val CONSTANT_ONE = 1
const val CONSTANT_TWO = 2
class Service {
}
或者如果您想要类似于 private static final int CONSTANT_ONE = 1;
的内容
您可以在 Kotlin 文件中将常量声明为私有,只有同一文件中的 classes 可以访问它。
private const val CONSTANT_ONE = 1
class A{
// can access CONSTANT_ONE
}
class B{
// can access CONSTANT_ONE
}
我最近一直在研究 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。
M14 改变状态 "Since M14 we need to prefix Kotlin constants with const to be able to use them in annotations and see as fields from Java"
class Service {
companion object {
const val CONSTANT_ONE = 1
const val CONSTANT_TWO = 2
}
}
IntelliJ 仍然显示 Java 情况下的错误,但它可以编译并运行。
一个更简单的解决方案是: 在 'Kotlin file' 而不是 'Kotlin class' 中声明常量,这基本上是在 class 范围之外声明常量,并且 它们可以在任何地方引用 适当的进口。
const val CONSTANT_ONE = 1
const val CONSTANT_TWO = 2
class Service {
}
或者如果您想要类似于 private static final int CONSTANT_ONE = 1;
您可以在 Kotlin 文件中将常量声明为私有,只有同一文件中的 classes 可以访问它。
private const val CONSTANT_ONE = 1
class A{
// can access CONSTANT_ONE
}
class B{
// can access CONSTANT_ONE
}