Inicialización de propiedades en Kotlin: ¿by lazy o lateinit? ¿Cuál elegir?
¡Hola a todos! Acabo de empezar a aprender Kotlin y me encontré con un problema. Estoy escribiendo una pequeña aplicación y necesito inicializar algunas propiedades de la clase, pero sus valores no se conocen de inmediato, por ejemplo, después de cargar datos o en `onCreate` para Android.
Conozco dos enfoques: `lateinit` y `by lazy`. Pero no puedo entender cuándo usar cuál. Aquí hay un ejemplo de mi código:
```kotlin
class MyActivity : AppCompatActivity() {
private lateinit var userName: String
private val userAge: Int by lazy {
fetchUserAge() // este método puede ser llamado más tarde
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
userName = "John" // inicialización lateinit
}
private fun fetchUserAge(): Int {
return 25
}
}
```
El problema es que si uso `lateinit` para `userName`, el IDE se queja si intento hacerlo `val`. Y `by lazy` solo funciona con `val`. También he oído que `latei