是否可以编写等效的Java
interface Foo {
public static final INSTANCE = new Foo {};
}
在Kotlin?
如果Foo
是一个班级,我可以使用:
class Foo {
companion object {
@JvmField
val INSTANCE = object : Foo() {}
}
}
但是使用界面会出错:
JvmField不能应用于接口
的伴随对象中定义的属性
@JvmStatic
也不起作用。
答案 0 :(得分:1)
从Kotlin 1.3开始,您可以执行以下操作:
interface Foo {
companion object {
@JvmField val INSTANCE = object : Foo {}
}
}
然后从Java中以Foo.INSTANCE
进行调用。
答案 1 :(得分:0)
以下适用于我。
interface Foo {
fun bar()
companion object {
val INSTANCE = object : Foo { // There are no () An interface cannot be instantiated.
override fun bar() {
//Do something
...
}
}
}
}
然后在您的活动中,只需调用Foo.INSTANCE
即可将实例返回到Foo
。