Kotlin扩展功能和接口



我已将interface定义为,

interface Manga {
fun title(): String
fun rating(): String
fun coverUrl(): String
val id: String
}

我想在不影响接口可变性的情况下更改集合id。所以我创建了一个扩展函数来设置id字段。

fun Manga.setId(id_: String): Manga {
return object : Manga {
override fun title() = this@setId.title()
override fun rating() = this@setId.rating()
override fun coverUrl() = this@setId.coverUrl()
override val id: String
get() = id_
}
}

如果我想在漫画界面上添加字段,那么我必须修改扩展函数。

有没有一种方法可以在创建新对象时只覆盖id而不修改扩展函数?或者任何其他方式来达到同样的效果。

使用委托

fun Manga.setId(id_: String): Manga {
return object : Manga by this {
override val id: String
get() = id_
}
}

最新更新