kotlin
文章平均质量分 60
HXL~
干!
展开
-
聊聊kotlin属性拓展和方法拓展(四)
kotlin的属性拓展和方法拓展能够扩展一个类的新功能而无需继承该类或者使用像装饰者这样的设计模式,但是他并不是打破原来类的封闭性和完整性,而是一种语法糖。并且属性拓展和方法拓展在原理上其实是一样的,反编译为Java后可以看到两者都是通过静态方法实现的。只要记住这一点再去理解拓展的很多特性就很容易了。但是实际工作中会遇到类的继承、方法重写、多态等实际问题,当这些问题和拓展糅合在一起的时候,还是值得去学习的。拓展的原理/** * 基础类 */open class Car/** * 拓展方法原创 2021-01-07 17:54:08 · 209 阅读 · 0 评论 -
聊聊kotlin属性委托源码解析(三)
1. 什么是属性委托属性委托就是在一个类中,生成一个委托对象来保存被委托的属性。委托对象要求:拥有被 operator修饰的 getValue 和 setValue 函数,当获取属性或者为属性赋值的时候,会自动调用委托对象的getValue 和 setValue 函数2. 属性委托转换规则先来自己定义一个属性委托的对象:class Person { var age: Int by AgeDelegate()}class AgeDelegate { private var age原创 2020-09-03 16:53:07 · 447 阅读 · 0 评论 -
聊聊kotlin之Lambda表达式解析(二)
1.lambda类型解释在kotlin中,lambda可以表示函数类型,也可以表示Java语言声明的函数式接口,但用kotlin语言声明的函数式接口是不能用lambda表示的,kotlin声明的函数式接口和lambda是不能互相转换的。lambda表示函数:val addMethod: (Int, Int) -> Int = { a, b -> a + b}lambda表示java声明的函数式接口:val runnable: Runnable = Runnable { pr原创 2020-09-01 20:53:57 · 775 阅读 · 0 评论 -
聊聊Kotlin包的概念(一)
1.Kotlin默认导包在kotlin中,我们可以在顶层函数或者类方法中随时随地的使用 let、with、also、apply等作用域方法,也可以随时调用 listOf、mutableListOf 等集合相关的方法,那么这些方法是从哪来的呢?原因就是每一个kotlin文件,都会默认导入很多包。根据官方文档,每一个kotlin文件都会默认导入以下包:kotlin.*kotlin.annotation.*kotlin.collections.*kotlin.comparisons.* (自 1.1 起原创 2020-09-01 14:39:43 · 680 阅读 · 0 评论