Skip to content

Kotlin 委托

约 240 字小于 1 分钟

Androidkotlin

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