gpt4 book ai didi

Kotlin 扩展函数和接口(interface)

转载 作者:行者123 更新时间:2023-12-02 13:03:24 24 4
gpt4 key购买 nike

我已经定义了 interface作为,

interface Manga {
fun title(): String
fun rating(): String
fun coverUrl(): String
val id: String
}
我想在不影响接口(interface)可变性的情况下更改 set 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 而无需修改扩展功能?或任何其他方式来达到相同的效果。

最佳答案

使用delegation

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

关于Kotlin 扩展函数和接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63578442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com