Junior
Explique como funciona a propriedade 'lateinit' em Kotlin.
sobes.tech IA
Resposta da IA
O lateinit é utilizado para declarar propriedades não nulas que serão inicializadas posteriormente, antes do primeiro acesso a elas.
- Aplica-se apenas a propriedades mutáveis (
var). - Não pode ser usado com tipos de dados primitivos (como
Int,Boolean,Float), pois eles não podem sernull. - O compilador não exige uma inicialização imediata da propriedade na sua declaração.
- Se a propriedade for usada antes de sua inicialização, será lançada uma exceção
UninitializedPropertyAccessException.
Exemplo:
class MyClass {
lateinit var myProperty: String // A propriedade será inicializada posteriormente
fun initializeProperty(value: String) {
myProperty = value
}
fun useProperty() {
println(myProperty) // Seguro após a inicialização
}
}
fun main() {
val obj = MyClass()
// obj.useProperty() // Aqui será lançada uma UninitializedPropertyAccessException
obj.initializeProperty("Hello")
obj.useProperty() // Vai imprimir "Hello"
// Verificação de inicialização
if (obj::myProperty.isInitialized) {
println("Propriedade inicializada")
}
}
É possível verificar se uma propriedade lateinit foi inicializada usando reflexão: ::propertyName.isInitialized.
O uso de lateinit é comum em frameworks onde as propriedades são injetadas (injeção de dependências) após a criação do objeto (por exemplo, em Android com elementos de UI ou injeção de dependências).