本文主要是介绍Kotlin语法(十六)-代理(Delegation),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考原文:http://kotlinlang.org/docs/reference/delegation.html
类代理(Class Delegation)
代理模式提供一种实现继承的替代方式,Kotlin原生就支持代理模块。
如下,“Derived
”继承“Base
”接口,并代理了它的全部公共方法:
interface Base {fun print()
}class BaseImpl(val x: Int) : Base {override fun print() { print(x) }
}class Derived(b: Base) : Base by bfun main(args: Array<String>) {val b = BaseImpl(10)Derived(b).print() // prints 10
}
通过“by”关键字,将“b”实例存储到Derived对象中,编译器会生成“Base
”接口的所有方法,使用“b”的实现。
代理属性(Delegated Properties)
对于很多公用属性,尽管在每次需要的时候可以通过手动实现;更好的方式是一次实现多次使用,并放到一个库(library)。
比如,有下面类型的属性:
Ø 延迟属性(lazy properties):只有第一次访问时才会计算值。
Ø 观察属性(observable properties):当该属性发生改变时,会通知监听者。
Ø map中存储属性,不是在单独的字段中。
在Kotlin中,为了满足上面几种情况,提供了代理属性( delegated properties):
class Example {
这篇关于Kotlin语法(十六)-代理(Delegation)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!