Avatar ·

Initialisation des propriétés en Kotlin : by lazy ou lateinit — que choisir ?

Bonjour à tous ! Je viens de commencer à apprendre Kotlin et j'ai rencontré un problème. J'écris une petite application et j'ai besoin d'initialiser certaines propriétés d'une classe, mais leurs valeurs ne sont pas connues immédiatement — par exemple, après le chargement des données ou dans `onCreate` pour Android. Je connais deux approches : `lateinit` et `by lazy`. Mais je n'arrive pas à comprendre quand utiliser laquelle. Voici un exemple de mon code : ```kotlin class MyActivity : AppCompatActivity() { private lateinit var userName: String private val userAge: Int by lazy { fetchUserAge() // cette méthode peut être appelée plus tard } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) userName = "John" // initialisation lateinit } private fun fetchUserAge(): Int { return 25 } } ``` Le problème est que si j'utilise `lateinit` pour `userName`, l'IDE se plaint si j'essaie de le rendre `val`. Et `by lazy` ne fonctionne qu'avec `val`. J'ai aussi entendu dire que `latei