当前位置 : 主页 > 手机开发 > 其它 >

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

来源:互联网 收集:自由互联 发布时间:2021-06-19
有时,创建已由现有第三方代码(即来自库)实现的接口很有用.例如,我们可以想象选择String类的方法的子集并声明GenericString.然后我们可以定义实现这些方法的其他GenericStrings,但不能定义
有时,创建已由现有第三方代码(即来自库)实现的接口很有用.例如,我们可以想象选择String类的方法的子集并声明GenericString.然后我们可以定义实现这些方法的其他GenericStrings,但不能定义String类的其他方法.唯一的问题是String类不从GenericString类继承.是否可以在Kotlin中为现有类添加接口,还是必须创建实现此接口的String子类? 不,不幸的是,不支持“扩展类型”.在Kotlin论坛( here)上讨论了这个问题,但是语言中没有类似的内容.

如果你想投票,有一个KEEP.

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

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

然后使用它.

网友评论