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

时间:2018-02-19 07:02:38

标签: inheritance interface kotlin

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

1 个答案:

答案 0 :(得分:7)

不,不幸的是,不支持“扩展类型”。 Kotlin论坛(here)对此进行了讨论,但语言中没有类似的内容。

如果您想投票,可以使用KEEP

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

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

然后再使用它。