属性代理是指属性完全被代理类来实现,var的代理类需要实现setValue和getValue,而val的代理类只需要getValue方法即可
var i:Int by IntDelegate()
val j:Int by ValIntDelegate()
class IntDelegate{
operator fun getValue(thisRef: Any?, property: KProperty<*>): Int {
return 1
}
operator fun setValue(thisRef: Any?, property: KProperty<*>,value:Int){
}
}
class ValIntDelegate{
// val 无需写setValue
operator fun getValue(thisRef: Any?, property: KProperty<*>): Int {
return 1
}
}