属性的委托

package myfirst

import kotlin.reflect.KProperty

class A {
var i:Int=1
var j:Int by this.i//通过旧值改变新值,执行顺序get,by,set
}

private operator fun Int.setValue(a: A, property: KProperty<*>, i: Int) {}
private operator fun Int.getValue(a: A, property: KProperty<*>): Int {
return a.i
}

fun main(args: Array<String>) {
var a=A()
a.i=10
println(a.j)//输出:10
}
posted @ 2021-09-09 18:30  cgy33  阅读(31)  评论(0)    收藏  举报