Kotlin – 使用“by lazy”和“lateinit”初始化屬性
Kotlin 庫為屬性宣告提供了兩種不同的訪問修飾符。
在本文中,我們將重點介紹這兩個訪問修飾符之間的區別,以及如何在應用程式中使用它們。
Lateinit
為了建立一個“lateInit”變數,我們只需要將關鍵字“lateInit”作為該變數的訪問修飾符新增。以下是一組在 Kotlin 中使用“lateInit”需要遵循的條件。
將“lateInit”與可變變數一起使用。這意味著,我們需要將“var”關鍵字與“lateInit”一起使用。
“lateInit”僅允許用於非空資料型別。
“lateInit”不適用於基本資料型別。
當變數屬性沒有任何**getter**和**setter**方法時,可以使用“lateInit”。
示例
我們將宣告一個變數為**lateInit**,我們將看到如何在整個程式中訪問它。
class Tutorial {
lateinit var name : String
fun checkLateInit(){
// checking whether the value is assigned or not
if(this::name.isInitialized)
println("Your value is not assigned");
else{
// initializing name
name = "www.tutorialspoint.com/"
println(this.name)
// this will return true
}
}
}
fun main() {
var obj=Tutorial();
obj.checkLateInit();
}輸出
執行程式碼後,將生成以下輸出:
www.tutorialspoint.com/
延遲初始化
為了有效地管理記憶體,Kotlin 引入了一項名為**延遲初始化**的新功能。當使用**lazy**關鍵字時,只有在呼叫物件時才會建立該物件,否則不會建立任何物件。**lazy()**是一個函式,它接收一個 lambda 並返回一個**lazy**的例項,該例項可以用作已應用其上的延遲屬性的委託。它旨在防止物件的不必要初始化。
Lazy 只能與非空變數一起使用。
變數只能是**val**。“var”不允許使用。
物件僅初始化一次。此後,您將從快取記憶體中接收值。
在應用程式中使用物件之前,不會初始化該物件。
示例
在此示例中,我們將宣告一個延遲變數**“myName”**,我們可以看到對程式碼這部分的呼叫只會發生一次,並且在初始化值後,它將在整個應用程式中記住該值。一旦使用延遲初始化分配了值,就不能重新分配它。
class Demo {
val myName: String by lazy {
println("Welcome to Lazy declaration");
"www.tutorialspoint.com"
}
}
fun main() {
var obj=Demo();
println(obj.myName);
println("Second time call to the same object--"+obj.myName);
}輸出
執行程式碼後,將生成以下輸出:
Welcome to Lazy declaration www.tutorialspoint.com Second time call to the same object--www.tutorialspoint.com
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP