我是IT王魔王
这是我的第7篇IT系列原创
Kotlin系列我打算写出最适合初学者入门的文章
网上有很多文章,这些文章写的都不错
但是鄙人以为,这些文章有一个共同的特点(是优点,但同时也是缺点)
所以我用特点来形容
我一般不喜欢讲废话(这是一句废话,sorry)
能用图解决的尽量不用文字描述
一个简单的业务场景:给一个textView设置文字(不要在布局文件中指定)
/**
* kotlin中的activity,其他不用管
*/
class KotlinStudyMainActivity : AppCompatActivity() {
var view:TextView?=null //一个textView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_kotlin_study_main)
//实例化
view=findViewById(R.id.tvName)
//设置文字
view?.setText("奔波儿霸")
}
}
结合本系列博客前面的内容,这个代码只能这样写。
但这样写有一个小问题
在实际的业务场景中,View永远不会为空,因为一个为空的View是没有意义的,但是,我们却声明了一个可以为空的View,这样一看起来比较矛盾,二会影响阅读性。
比较符合我们的需求的代码应该是这样的
不过这样写会报错,因为我们声明了一个非空的变量。
此时该怎么办呢?于是我灵机一动,这样写
激动的心,颤抖的手,马上运行一下看看效果
又双叒叕空指针了
这样写报空指针的原因在于
怎么办?现在我们抽一支烟,冷静一下
是时候请出我们今天的主角了 : lateinit
lateinit的作用:延迟初始化
具体来讲,这个关键字告诉编译器,我无法声明的时候就初始化,但是我保证我在使用前一定会初始化,你就别给我检查了。
通过这个关键字的使用,就可以完美解决上面的业务场景。
而这样的场景,在实际开发中有很多。
这里我就不一 一举例了。