Junior
Kotlin-də 'lateinit' xüsusiyyətinin necə işlədiyini izah edin.
sobes.tech Süni İntellekt
AI-dan cavab
lateinit istifadə edilən mülkiyyətləri elan etmək üçün istifadə olunur, onlar daha sonra, ilk müraciətdən əvvəl, inisializasiya ediləcək.
- Yalnız dəyişkən mülkiyyətlərə (
var) tətbiq edilir. - Primitiv məlumat tipləri ilə (
Int,Boolean,Float) istifadə edilə bilməz, çünki onlarnullola bilməz. - Kompilyator mülkiyyətin elanında dərhal inisializasiya edilməsini tələb etmir.
- Əgər mülkiyyət inisializasiya edilmədən istifadə olunarsa,
UninitializedPropertyAccessExceptionistisnası atılır.
Nümunə:
class MyClass {
lateinit var myProperty: String // Mülkiyyət daha sonra inisializasiya ediləcək
fun initializeProperty(value: String) {
myProperty = value
}
fun useProperty() {
println(myProperty) // Inisializasiya sonrası təhlükəsiz
}
}
fun main() {
val obj = MyClass()
// obj.useProperty() // Burada UninitializedPropertyAccessException atacaq
obj.initializeProperty("Hello")
obj.useProperty() // "Hello" çap edəcək
// Inisializasiya yoxlaması
if (obj::myProperty.isInitialized) {
println("Mülkiyyət inisializasiya olunub")
}
}
lateinit ilə elan edilmiş mülkiyyətin inisializasiya olunub-olunmadığını refleksiya vasitəsilə yoxlamaq mümkündür: ::propertyName.isInitialized.
lateinit istifadəsi, xüsusən, obyekt yaradıldıqdan sonra (məsələn, Android-də UI elementləri və ya bağımlılıq injeksiyası ilə) mülkiyyətlərin injektsiya olunduğu frameworklərdə geniş yayılmışdır.