本文记录如何使用 Google
官方库 DataBinding
进行数据绑定。
平时编译使用 Freeline
,但是很遗憾的是 Freeline
在 DataBinding
的支持上还有些问题,希望早些解决。
另外 AndroidStudio
对 DataBinding
的语法支持的不是很好,很多官网文档的语法在项目的编译期都是报错的,后面应该会有改进。
本文记录如何使用 Google
官方库 DataBinding
进行数据绑定。
平时编译使用 Freeline
,但是很遗憾的是 Freeline
在 DataBinding
的支持上还有些问题,希望早些解决。
另外 AndroidStudio
对 DataBinding
的语法支持的不是很好,很多官网文档的语法在项目的编译期都是报错的,后面应该会有改进。
本文介绍 Kotlin
反射的用法。
在 Java
中也有反射的相关用法,不过因为运行时反射效率差,而且 java
中的反射使用起来相对麻烦,在实际开发中反射的使用还是很少的。不过在 Kotlin
中的反射使用起来十分简单。
反射,我们平常访问对象的属性和函数,是针对对象来说的,总是访问他们的 “值”,比如一个属性的具体值,或者执行某个函数,都是使用对象来调用,这都是访问 “值” 的操作,而反射,是针对类来说的,也就是不必有类实体,而是访问类的属性和函数本身,不再在乎值到底是什么,而是真正的把这个属性或函数拿出来,当我们想要这个属性的值或函数的执行结果,我们就需要用拿到的属性和函数本身去调用一个对象,这个过程就反过来了,不是对象调用属性和函数,而是属性和函数本身调用对象。
在 Kotlin
中允许对操作符进行重载,并提供了简单友好的方式来支持这个特性,这样的好处就是我们可以对一些原本不支持操作符的类型使用操作符,简化代码,举个例子,Kotlin
中的集合类型是支持操作符的,而 Java
中不支持,对比一下使用和不使用操作符对集合增减元素的操作。
1 | // 使用操作符 |
Walle
是 APK Signature Scheme v2
下新的多渠道打包方案,速度快,也支持 360 加固,下面是本文相关链接。
在 Java
中集合类型也是很重要的数据结构,它可以用来存储一组同类型的数据;
在 Kotlin
中将集合明确分为了可变的集合和不可变的结合,List<out T>
是一个只读的接口,只能执行的 get()
,size()
等读取方法,如果想要更改集合的数据,需要使用 MutableList<T>
,从而区分可辨与不可变集合。Set<out T>
和 MutableSet<T>
、Map<K,out V>
和 MutableMap<K,V>
也是同样的模式。
相比 Java
,Kotlin
中的集合除了包含 Java
中的集合的相关方法,还扩展了很多简化集合操作的函数,结合 Lambda
表达式,把一些对集合的操作变的相当相当方便。
本文主要是对集合类的各种函数进行尝试和整理。
在进行属性的初始化时能够感受到 Kotlin
在编译时对 null
值的控制,正是因为 Kotlin
的这些特性,使得 Kotlin
成为一种 空安全(Null Safaty)
的语言,遵循 Kotlin
的规范将有效的避免程序中的 NPE
。
其实遵循 Kotlin
的变量的声明和初始化方式基本可以避免 NPE
的出现,Kotlin
不允许给一个 变量 null
值,但是你可以使用 Type?
的形式(例如 String?
)声明这是一个可以为 null
的变量,他就可以被初始化为 null
。
除此之外,kotlin
提供了丰富的运算符在运行时进行 空值检测 ,简化代码逻辑。
本文学习 Kotlin
函数的相关用法。主要包括 :
函数的声明和使用,函数的参数和返回值,单表达式函数的使用,使用不定长参数。
局部函数,尾递归函数,高阶函数,内联函数等。
Lambda
表达式,匿名函数和闭包。
其他如,reifeid
关键字,非局部返回及带有接受者的函数字面值。
函数在 Kotlin
函数是一等公民,它的地位和对象一样,所以不要对函数特别看待,就把它当作对象看就行了,这样很多东西会好理解的多。