阅读完需:约 1 分钟
延迟初始化


延迟初始化比较形象的是在java中有一个属性,没有赋值初始化,但是我可以在后面的代码中去初始化。


对于延迟初始化首先可以照搬java的代码,为属性设置 ?. 来使得属性可以为null,但是不好的地方在于,每一次使用属性的时候都要去加上 ?. 来声明我这个属性是可以为空的,很麻烦。

其次是我们可以使用kotlion中的特性 lateinit
来设置属性,这个 lateinit
可以使编译器忽略属性的初始化,就相当于掩耳盗铃的意思,该是null的还是null,并不能避免null异常。

因为 lateinit
并不难阻止null的异常,所以我们可以调用 lateinit
的API,在使用属性的时候去判断这个 lateinit
设置的属性是否为空,虽然也能达到我们需要的效果,但是还不如上面的 ?. 来的方面。

最后我们可以使用 lazy
来初始化属性,当然这个也是最推荐的方式。
