Avatar ·

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