是否可以在Kotlin中为现有类添加接口?

Cas*_*ash 7 inheritance interface kotlin

有时,创建已由现有第三方代码(即来自库)实现的接口很有用.例如,我们可以想象选择String类的方法的子集并声明a GenericString.然后我们可以定义GenericString实现这些方法的其他方法,但不能定义String该类的其他方法.唯一的问题是String该类不会从GenericString类继承.是否可以在Kotlin中为现有类添加接口,还是必须创建String实现此接口的子类?

Moi*_*ira 9

不,不幸的是,不支持"扩展类型".在Kotlin论坛(这里)上讨论了这个问题,但是语言中已经没有类似的内容了.

如果你想投票,有一个保持这个.

你可以做什么,虽然它不是真的相同,但它有一个接口,并有一个扩展方法返回你想要使用的每个类型的实现:

fun String.toGenericString() = object : GenericString {
    private val str = this@toGenericString
    override val length get() = str.length
    //...etc
}
Run Code Online (Sandbox Code Playgroud)

然后使用它.