Junior
Leg uit hoe de eigenschap 'lateinit' in Kotlin werkt.
sobes.tech AI
Antwoord van AI
lateinit wordt gebruikt om niet-nullbare eigenschappen te declareren die later worden geïnitialiseerd, vóór de eerste toegang.
- Alleen toegepast op wijzigbare eigenschappen (
var). - Kan niet worden gebruikt met primitieve datatypes (zoals
Int,Boolean,Float), omdat deze nietnullkunnen zijn. - De compiler vereist geen onmiddellijke initialisatie van de eigenschap bij de declaratie.
- Als de eigenschap wordt gebruikt voordat deze is geïnitialiseerd, wordt een
UninitializedPropertyAccessExceptiongegooid.
Voorbeeld:
class MyClass {
lateinit var myProperty: String // De eigenschap wordt later geïnitialiseerd
fun initializeProperty(value: String) {
myProperty = value
}
fun useProperty() {
println(myProperty) // Veilig na initialisatie
}
}
fun main() {
val obj = MyClass()
// obj.useProperty() // Hier wordt een UninitializedPropertyAccessException gegooid
obj.initializeProperty("Hello")
obj.useProperty() // Zal "Hello" afdrukken
// Initialisatie controleren
if (obj::myProperty.isInitialized) {
println("Eigenschap geïnitialiseerd")
}
}
Het is mogelijk om te controleren of een lateinit eigenschap is geïnitialiseerd met behulp van reflectie: ::propertyName.isInitialized.
Het gebruik van lateinit komt vaak voor in frameworks waar eigenschappen worden geïnjecteerd (dependency injection) na het maken van het object (bijvoorbeeld in Android met UI-elementen of dependency injection).