kotlin学习笔记——委托属性
委托属性
class Delegate<T> : ReadWriteProperty<Any?, T>{override fun getValue(thisRef: Any?, property: KProperty<*>): T{return ...}override fun setValue(thisRef: Any?, property: KProperty<*>, value: T){...}
}
其中T是委托属性的类型,getValue接收一个类的引用和一个属性的元数据,setValue多接收一个设置的值。
class Example {var p: String by Delegate()
}
一、标准委托
1、Lazy
class App : Application{val database: SQLiteOpenHelper by lazy{MyDatabaseHelper(applicationContext)}override fun onCreate(){super.onCreate()var db = database.writableDatabase}
}
所以只要当在onCreate中使用时才去初始化,而这时候applicationContext已经存在了。
2、Observable
class ViewModel(val db: MyDatabase){var name by Delegates.observable(""){d, old, new -> db.saveChange(this, new)}
}
这个例子中一旦值被修改就会保存到数据库中。
3、Vetoable
var name by Delegates.vetoable(0){d, old, new -> new >= 0
}
例子中表示只有新值是正数时才保存
4、NotNull
5、从Map中委托值
class Config (map: HashMap<String, Any?>){var name: String by mapvar id: Int by map
}var config = Config(hashMapOf("name" to "test","id" to 12
))
二、自定义委托
object DelegatesExt{fun notNullSingle<T>() : ReadWriteProperty<Any?, T> = NotNullSingle() //NotNullSingle是我们自定义的委托}
kotlin学习笔记——委托属性相关推荐
- Kotlin 学习笔记(七)—— Kotlin类与对象之属性与字段
Kotlin 学习笔记(七)-- Kotlin类与对象之属性与字段 Kotlin学习笔记系列教程 Kotlin 学习笔记(一)-- 概述.学习曲线.开发工具.参考资料 Kotlin 学习笔记(二)-- ...
- Kotlin学习笔记(3)- 语法
系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步!kotlin学习笔记系列首发简书和CSDN Kotlin学习笔记(1)- 环 ...
- Kotlin学习笔记(2)- 空安全
系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步!kotlin学习笔记系列首发简书和CSDN Kotlin学习笔记(1)- 环 ...
- Kotlin学习笔记19 阶段复习1
参考链接 示例来自bilibili Kotlin语言深入解析 张龙老师的视频 基础部分 Kotlin学习笔记 第一章开始 第二章 基础_积跬步 至千里-CSDN博客 类与继承 Kotlin学习笔记 第 ...
- Kotlin 学习笔记(八)—— Kotlin类与对象之接口
Kotlin 学习笔记(八)-- Kotlin类与对象之接口 Kotlin学习笔记系列教程 Kotlin 学习笔记(一)-- 概述.学习曲线.开发工具.参考资料 Kotlin 学习笔记(二)-- 基础 ...
- Kotlin学习笔记(1)- 环境配置
系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步!kotlin学习笔记系列首发简书和CSDN Kotlin学习笔记(1)- 环 ...
- Kotlin学习笔记20 阶段复习2
参考链接 示例来自bilibili Kotlin语言深入解析 张龙老师的视频 lambda表达式 内联函数 Kotlin学习笔记 第三章 函数 高阶函数 lambda表达式 内联函数_积跬步 至千里- ...
- Kotlin学习笔记12——数据类和密封类
Kotlin学习笔记12--数据类和密封类 前言 数据类 在类体中声明的属性 复制 componentN 解构声明 密封类 尾巴 前言 上一篇,我们学习了Kotlin中的拓展,今天继续来学习Kotli ...
- Kotlin 学习笔记(四)—— 协程的基础知识,面试官的最爱了~
又是一个月没见了,坚持永远是世上最难的事情,但,往往难事才会有更大的收获.与君共勉~ 前段时间一直在学习 Compose,所以导致 Kotlin 笔记系列搁置了好久.一方面是因为 Compose 的学 ...
最新文章
- 关于“中国大妈”的用户画像
- 数据处理中的准确性问题
- 【01】什么是AJAX
- 电子版,材料获取说明
- 第3步 (请先看第2步再看第3步) 新建完spring+springmvc+mybatis项目 需要推送gitee仓库进行管理 巨详细
- android oreo 源码,android – Oreo:如何在源代码中找到所有受限制的系统调用?
- 索引-python核心技术-pyhui版
- linux下c 调用python,在Linux下使用python ctypes调用io\u submit
- 从零开始学前端:伪元素和盒子模型 --- 今天你学习了吗?(CSS:Day13)
- 请不要滥用SharedPreference
- dism++封装系统使用教程_【原创】最新WIN10系统封装教程2019系列(一)——定制母盘...
- 视频教程-数据结构实战完全手册-C/C++
- python实现whois查询_python3实现域名查询和whois查询
- selenium网页截图总结
- java订单到期自动取消_订单自动过期实现方案
- xposed android debug,Android 手机开启全局调试xposed插件
- 富途入金步骤记录(个人使用)
- rac集群状态中监听状态CHECK TIMED OUT处理
- 以太坊源码分析:fetcher模块和区块传播
- 1044 Shopping in Mars(柳神39行代码+详细注释)