想象一下,我有一个像:
这样的界面interface MyInterface {
fun doSomething()
}
我在Kotlin和Java之间进行交互。我现在想要一个这个接口的常量静态实例,但我希望它成为接口的一部分。我能做到这一点:
interface MyInterface {
fun doSomething()
companion object {
val CONSTANT = object: MyInterface {
override fun doSomething() { ... }
}
}
}
但这意味着我需要写MyInterface.Companion.getCONSTANT()
。 @JvmField
在这里无法工作。
我也尝试过:
interface MyInterface {
fun doSomething()
object CONSTANT: MyInterface {
override fun doSomething() { ... }
}
}
}
哪个适用于其他Kotlin文件(我可以写MyInterface.CONSTANT
),但我必须在Java中编写MyInterface.CONSTANT.INSTANCE
。这个解决方案似乎与我想要的最接近。
任何解决方案?我希望能够在Kotlin和Java中编写MyInterface.CONSTANT
并让它们引用实现该接口的单个static final
对象。
我相信我也可以将我的界面转换为抽象类,但这是最后的选择。
答案 0 :(得分:1)
此故障单中跟踪了无法在接口中使用@JvmStatic
的问题:https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FKT-6301
现在已修复,comment表示
修复可以在1.2.30下的语言版本1.3'选项