Junior — Middle
Dans quel ordre l'initialisation des propriétés et l'exécution des blocs de code se produisent-elles lors de la création d'un objet, y compris l'objet compagnon, le bloc init, les variables dans le constructeur et les variables ordinaires?
sobes.tech IA
Réponse de l'IA
Lors de la création d’un objet en Kotlin, l’ordre d’initialisation est le suivant :
- Initialisation de l’objet compagnon (companion object) — cela se produit une seule fois lors du chargement de la classe, avant la création des instances.
- Initialisation des propriétés déclarées dans le corps de la classe (y compris celles déclarées en dehors du constructeur) — elles sont initialisées dans l’ordre de leur déclaration.
- Exécution des blocs init — ils sont exécutés dans l’ordre dans lequel ils sont déclarés dans la classe, immédiatement après l’initialisation des propriétés.
- Initialisation des propriétés déclarées dans le constructeur (par exemple, paramètres avec val/var) — elles sont initialisées lors de l’appel du constructeur.
Exemple :
class Example(val constructorProp: String) {
val property1 = println("property1 initialisé")
init {
println("bloc init 1")
}
val property2 = println("property2 initialisé")
init {
println("bloc init 2")
}
companion object {
init {
println("companion object initialisé")
}
}
}
fun main() {
val example = Example("constructeur")
}
La sortie sera environ :
companion object initialisé
property1 initialisé
bloc init 1
property2 initialisé
bloc init 2
Ainsi, l’objet compagnon est initialisé une seule fois lors du chargement de la classe, puis lors de la création de l’objet, les propriétés sont initialisées et les blocs init sont exécutés dans l’ordre de déclaration, et les paramètres du constructeur sont initialisés lors de l’appel du constructeur.