不知不觉使用Kotlin开发Android已经大半年的时间了,体验到的优势如下:
1、空指针安全
2、实用的扩展函数和内联函数
3、无数的语法糖
4、简洁的代码风格
等等..
这些优势让kotlin比java开发起来效率提升了不少,今天主要谈一下第一点,Kotlin是如何避免空指针的:
Kotlin的类型可分为可空和非空,这里以实体类TestBean为例:
data class TestBean(var beanA: BeanA?)
data class BeanA(
val str1: String?,
val str2:String
)
BeanA为可空类型,可以被赋值为null,但是当你调用其成员或者方法时,编译不会通过:
image.png
这个时候有两种方案解决这个报红:
- 在调用后加上?,其实就是以下代码简化的效果:
if(testBean.beanA!=null){
// ...
}
打印结果:
image.png
-
使用!!,这个要慎用,其意义就是断言当前对象不为空,一定会执行下去,如果确实不为空就没问题,如果为空那就会像java一样抛出空指针异常,导致程序崩溃:
image.png
崩溃异常:
image.png
现在我们就从原理上知道了Kotlin是如何解决空指针问题的,一个?就能解决那么多空类型判断,更何况嵌套的情形,不仅仅是空指针,使用kotlin之后再也不用findViewById了,各种便捷的集合操作,单利模式,扩展函数、内联函数,监听器、lambda等等,开发效率会提升不少。
总之,Life is short , u need kotlin.
网友评论