没有延迟初始化的时候:
priavte var adapter : MsgAdapter?=null //需要首先赋值为null
//在接下来的方法中对其初始化
override fun onCreate(){
adapter = MsgAdapter(msgList)
}
//即便已经初始化,在下面方法中仍然需要判空
override fun onClick(){
adapter?.notifyItemInserted(msgList.size-1)
}
延迟初始化
private lateinit var adapter:MsgAdapter // 不需要赋与初始值null
//初始化过程
...
//
override fun onClick(){
adapter.notifyItemInserted(msgList.size-1)//这里就不需要判空了
}
注意:一定要在确定这个变量在被任何地方调用之前已经完成了初始化操作,不然无法保证安全性
判断一个代码是否已经完成初始化:
if(!::adapter.isInitialized){//固定写法
}
内容来源《第一行代码》郭霖