我已将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_
}
}