在使用kotlin開發中,因為各種原因,我們會經常需要使用到延遲加載的功能,目前kotlin的延遲加載主要有兩種:lateinit和lazy.
1. lateinit 的使用
lateinit是kotlin中的一個關鍵字,使用方法如下:
// 聲明一個string變量 lateinit var a1: String private fun test() { // 初始化 a1 = "test1" }
在var之前添加lateinit,然后選擇你想要的時候,初始化,但是有以下需要注意的地方:
lateinit只能修飾變量var,不能修飾常量val;lateinit不能對可空類型使用;lateinit不能對java基本類型使用,例如:Double、Int、Long等;- 在調用
lateinit修飾的變量時,如果變量還沒有初始化,則會拋出未初始化異常。
2. lazy 的使用
lazy也是kotlin中常用的一種延遲加載方式,使用方法如下:
val a2:String by lazy{ println("開始初始化") // 初始化的值 "sss" }
使用時,在類型后面加by lazy{}即可,{}中的最后一行代碼,需要返回初始化的結果,上述代碼中,"sss"即為最后初始化的值。
下面是lazy的一些注意點:
- lazy只能對常量val使用,不能修飾變量var
- lazy的加載時機為第一次調用常量的時候,且只會加載一次(畢竟是個常量,只能賦值一次)
