Inheritance 是否可以向Kotlin中的现有类添加接口?

Inheritance 是否可以向Kotlin中的现有类添加接口?,inheritance,interface,kotlin,Inheritance,Interface,Kotlin,有时,创建一个已经由现有第三方代码(即从库中)实现的接口很有用。例如,我们可以想象选择String类的方法子集并声明GenericString。然后我们可以定义实现这些方法的其他GenericStrings,但不能定义String类的其他方法。唯一的问题是String类没有从GenericString类继承。是否可以向Kotlin中的现有类添加接口,或者我是否必须创建一个实现此接口的String子类?否,很遗憾,不支持“扩展类型”。Kotlin论坛()对此进行了讨论,但该语言中没有类似的内容 如

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

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

如果你想投票的话,这是有理由的

一种可能的解决方法(尽管不是完全等效的)是使用一个表示所需行为的接口,并为要使用的每种类型创建一个返回实现(“委托”)的扩展方法:

fun String.toGenericString() = object : GenericString {
    private val str = this@toGenericString
    override val length get() = str.length
    //...etc
}
然后用这个代替