首页 > 其他 > 详细

Kotlin provideDelegate

时间:2017-10-24 13:43:29      阅读:304      评论:0      收藏:0      [点我收藏+]

提供委托

这又是一个蛋疼的叫法,其实,就是给A和委托B之间插入一个中间件而已

这个中件间的作用是用了对委托的参数做一个校验

好了,别的不多说,直接给demo

import kotlin.reflect.KProperty
2
3 class dge<T>(t:T) {
4 operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
5 return "$thisRef, 这里委托了 ${property.name} 属性"
6 }
7 }
8
9 class ResourceLoader<T>(id: Int) {
10 operator fun provideDelegate(
11 thisRef: MyUI,
12 prop: KProperty<*>
13 ):dge<T?> {
14 checkProperty(thisRef, prop.name)
15 // 创建委托
16 var t:T?=null
17 return dge(t)
18 }
19
20 private fun checkProperty(thisRef: MyUI, name: String) {println(name)}
21 }
22
23 fun <T> bindResource(id: Int): ResourceLoader<T> { return ResourceLoader<T>(id) }
24
25 class MyUI {
26 val image by bindResource<String>(1)
27 val text by bindResource<String>(2)
28 }
29
30 fun main(args:Array<String>) {
31 val myui: MyUI = MyUI()
32 println(myui.image)
33 }

//结果

image
text
MyUI@357246de, 这里委托了 image 属性

正如你所见:首先,在MyUI对象加载,然后把属性委托对象备齐,也即是答应出属性名称image和text,随后,当你查看M有UI对象的image属性时,委托对象返回属性值:MyUI@357246de, 这里委托了 image 属性

嗯,就是这样。

如果你不明白是么叫做提供委托的话,那么请多看几遍我的Demo,我想,你会有心得的!

Kotlin provideDelegate

原文:http://www.cnblogs.com/woodzcl/p/7722959.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!