Junior
Explicați cum funcționează proprietatea 'lateinit' în Kotlin.
sobes.tech AI
Răspuns de la AI
lateinit este utilizat pentru a declara proprietăți non-nullable care vor fi inițializate mai târziu, înainte de prima utilizare.
- Se aplică doar proprietăților modificabile (
var). - Nu poate fi utilizat cu tipuri de date primitive (cum ar fi
Int,Boolean,Float), deoarece acestea nu pot finull. - Compilatorul nu necesită o inițializare imediată a proprietății la declarare.
- Dacă proprietatea este utilizată înainte de inițializare, va fi aruncată o excepție
UninitializedPropertyAccessException.
Exemplu:
class MyClass {
lateinit var myProperty: String // Proprietatea va fi inițializată mai târziu
fun initializeProperty(value: String) {
myProperty = value
}
fun useProperty() {
println(myProperty) // Sigur după inițializare
}
}
fun main() {
val obj = MyClass()
// obj.useProperty() // Aici va fi aruncată o `UninitializedPropertyAccessException`
obj.initializeProperty("Hello")
obj.useProperty() // Va afișa "Hello"
// Verificare dacă a fost inițializată
if (obj::myProperty.isInitialized) {
println("Proprietatea a fost inițializată")
}
}
Se poate verifica dacă o proprietate lateinit a fost inițializată folosind reflecția: ::propertyName.isInitialized.
Utilizarea lateinit este frecventă în framework-uri unde proprietățile sunt injectate (dependency injection) după crearea obiectului (de exemplu, în Android cu elemente UI sau injecție de dependențe).