如何在Kotlin中将类中的一个属性与另一个属性的相同属性委派

时间:2019-08-20 02:23:26

标签: oop kotlin properties delegates

如何在Kotlin中将类中的一个属性与另一个属性的相同属性一起委派?换句话说,有没有简单的方法可以替换下面的代码?

var someProperty: Type
    get() = otherMember.someProperty
    set(value) { otherMember.someProperty = value }

我无法从the official docs for Delegated Propeties中找到与此相关的任何信息。

1 个答案:

答案 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"
}