Inicialização de propriedades em Kotlin: by lazy ou lateinit — qual escolher?
Olá a todos! Comecei a estudar Kotlin recentemente e me deparei com um problema. Estou escrevendo um pequeno aplicativo e preciso inicializar algumas propriedades da classe, mas seus valores só são conhecidos depois — por exemplo, após carregar dados ou no `onCreate` para Android.
Conheço duas abordagens: `lateinit` e `by lazy`. Mas não consigo entender quando usar cada uma. Aqui está um exemplo do meu código:
```kotlin
class MyActivity : AppCompatActivity() {
private lateinit var userName: String
private val userAge: Int by lazy {
fetchUserAge() // este método pode ser chamado depois
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
userName = "John" // inicialização lateinit
}
private fun fetchUserAge(): Int {
return 25
}
}
```
O problema é que se eu usar `lateinit` para `userName`, o IDE reclama se eu tento torná-lo `val`. E `by lazy` funciona apenas com `val`. Também ouvi dizer que `latei
No answers yet.
Faça login para deixar uma resposta
Blogs
Principais erros de desenvolvedores C++ iniciantes e como evitá-los
Clean Code em C#: princípios e exemplos para desenvolvedores .NET
Padrões de Projeto em C++: quando e por quê
Arquitetura orientada a eventos em C++: como escrever código reativo