Kotlin 委托
约 239 字小于 1 分钟
kotlin
2023-08-13
属性委托
有些常⻅的属性操作,我们可以通过委托的方式,让它只实现一次,例如:
- lazy 延迟属性:值只在第一次访问的时候计算
- observable 可观察属性:属性发生改变时的通知
- map 集合:将属性存在一个 map 中 对于一个只读属性(即val声明的),委托对象必须提供一个名为 getValue() 的函数 对于一个可变属性(即var声明的),委托对象同时提供setValue()、getValue() 函数
类委托
可以通过类委托的模式来减少继承 类委托的,编译器会优先使用自身重写的函数,而不是委托对象的函数
interface Base {
fun print()
}
class BaseImpl(val x: Int) : Base {
override fun print() {
print(x)
}
}
// Derived 的 print 实现会通过构造参数中的 b 对象来完成。
class Derived(b: Base) : Base by b