在Kotlin宣布静态接口字段



是否可以编写相当于java的等效

interface Foo {
    public static final INSTANCE = new Foo {};
}

在kotlin?

如果Foo是一类,我可以使用:

class Foo {
    companion object {
        @JvmField
        val INSTANCE = object : Foo() {}
    }
}

但是,使用接口给出了一个错误:

jvmfield不能应用于接口的配置对象中定义的属性

@JvmStatic也不起作用。

来自Kotlin 1.3您可以做:

interface Foo {
    companion object {
        @JvmField val INSTANCE = object : Foo {}
    }
}

并将其从Java称为Foo.INSTANCE

以下对我有用。

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

最新更新