Junior
Explica cómo funciona la propiedad 'lateinit' en Kotlin.
sobes.tech AI
Respuesta de la IA
lateinit se utiliza para declarar propiedades no nulas que serán inicializadas más tarde, antes del primer acceso a ellas.
- Se aplica solo a propiedades mutables (
var). - No puede usarse con tipos de datos primitivos (como
Int,Boolean,Float), ya que no pueden sernull. - El compilador no requiere una inicialización inmediata de la propiedad en su declaración.
- Si la propiedad se usa antes de su inicialización, se lanzará una excepción
UninitializedPropertyAccessException.
Ejemplo:
class MyClass {
lateinit var myProperty: String // La propiedad será inicializada más tarde
fun initializeProperty(value: String) {
myProperty = value
}
fun useProperty() {
println(myProperty) // Seguro después de la inicialización
}
}
fun main() {
val obj = MyClass()
// obj.useProperty() // Aquí se lanzará UninitializedPropertyAccessException
obj.initializeProperty("Hello")
obj.useProperty() // Mostrará "Hello"
// Verificación de inicialización
if (obj::myProperty.isInitialized) {
println("La propiedad está inicializada")
}
}
Se puede verificar si una propiedad lateinit ha sido inicializada usando reflexión: ::propertyName.isInitialized.
El uso de lateinit es común en frameworks donde las propiedades se inyectan (inyección de dependencias) después de crear el objeto (por ejemplo, en Android con elementos de UI o inyección de dependencias).