标签: inheritance interface kotlin
有时创建一个已经由现有第三方代码(即来自库)实现的接口很有用。例如,我们可以想象选择String类的方法的子集并声明GenericString。然后我们可以定义实现这些方法的其他GenericString,但不能定义String类的其他方法。唯一的问题是String类不会从GenericString类继承。是否可以在Kotlin中为现有类添加接口,或者我是否必须创建实现此接口的String子类?
String
GenericString
答案 0 :(得分:7)
不,不幸的是,不支持“扩展类型”。 Kotlin论坛(here)对此进行了讨论,但语言中没有类似的内容。
如果您想投票,可以使用KEEP。
你可以做什么,虽然它实际上并不相同,但它有一个接口,并有一个扩展方法返回你想要使用的每种类型的实现:
fun String.toGenericString() = object : GenericString { private val str = this@toGenericString override val length get() = str.length //...etc }
然后再使用它。