Junior
Kotlin'da 'lateinit' xususiyatining qanday ishlashini tushuntiring.
sobes.tech AI
AIdan javob
lateinit keçiriladigan xususiyatlarni e'lon qilish uchun ishlatiladi, ular keyinchalik, ularga birinchi marta murojaat qilishdan oldin, initsializatsiya qilinadi.
- Faqat o'zgaruvchan (
var) xususiyatlarga qo'llaniladi. - Primitiv ma'lumot turlariga (masalan,
Int,Boolean,Float) qo'llanilmaydi, chunki ularnullbo'lishi mumkin emas. - Kompilyator xususiyatni e'lon qilishda darhol initsializatsiya qilishni talab qilmaydi.
- Agar xususiyat initsializatsiyadan oldin ishlatilsa,
UninitializedPropertyAccessExceptionistisnosi chiqariladi.
Misol:
class MyClass {
lateinit var myProperty: String // Xususiyat keyinchalik initsializatsiya qilinadi
fun initializeProperty(value: String) {
myProperty = value
}
fun useProperty() {
println(myProperty) // Initsializatsiyadan so'ng xavfsiz
}
}
fun main() {
val obj = MyClass()
// obj.useProperty() // Bu yerda UninitializedPropertyAccessException chiqariladi
obj.initializeProperty("Hello")
obj.useProperty() // "Hello" ni chiqaradi
// Initsializatsiyani tekshirish
if (obj::myProperty.isInitialized) {
println("Xususiyat initsializatsiya qilindi")
}
}
lateinit bilan belgilangan xususiyat initsializatsiya qilinganligini refleksiya yordamida tekshirish mumkin: ::propertyName.isInitialized.
lateinit ning qo'llanilishi, odatda, xususiyatlar ob'ekt yaratilgandan so'ng (masalan, Androidda UI elementlari yoki bog'lanishlar in'ektsiyasi) in'ektsiya qilinadigan frameworklarda keng tarqalgan.