背景
对kotlin的项目最近需要优化工程,这就得需要回顾之前的kt的知识点。
例如 null 情况下怎么处理比较优雅。
null 问题总结
kt中对null的处理比较严谨:巧用?
和!!
来实现一些java上实现比较繁琐的东西:
例如 判空 处理:
为了避免空指针,kotlin不让我们给非空变量赋值null,但null在Kotlin中依存在,这种情况下,我们可以使用安全操作符 ?来避免发生空指针异常。当编译器遇到安全调用操作符时,会去检查,如果是null,就会跳过函数的执行,而不会抛出异常。
init 和 构造函数的初始化
kt 中init 和 构造函数的初始化和 java 的语法机制有些差别:
主要就是语法结构不一样,其中的关键 词init
class Person() {
/*属性*/
private var gender: Boolean = true
/*次构造方法*/
constructor(name: String, gender: Boolean) : this() {
println("constructor")
}
companion object {
// 单例模式的生成方式
val instance by lazy {
Person("yzq",false)
}
/*伴生对象中的初始化代码*/
init {
println("companion init 1")
}
init {
println("companion init 2")
}
}
/*初始化代码块*/
init {
println("Person init 2,gender:${gender}")
}
/*初始化代码块*/
init {
println("Person init 1")
}
}
生成的效果:
以上都是为了回顾kt中的语法知识点。
参考