如何在Kotlin中将类中的一个属性与另一个属性的相同属性一起委派?换句话说,有没有简单的方法可以替换下面的代码?
var someProperty: Type
get() = otherMember.someProperty
set(value) { otherMember.someProperty = value }
我无法从the official docs for Delegated Propeties中找到与此相关的任何信息。
答案 0 :(得分:1)
您可以像这样使用Delegation:
interface IA {
var someProperty: String
}
class A : IA {
override var someProperty: String = ""
get() {
println("get by otherMember")
return field
}
set(value) {
println("set by otherMember")
field = value
}
}
class B(private val otherMember:A) : IA by otherMember
fun main() {
val b = B(A())
b.someProperty = "test" // prints "set by otherMember"
println(b.someProperty) // prints "get by otherMember" "test"
}