Sobes.tech
Junior — Middle

Quelle est la différence entre la déclaration des champs dans le constructeur et dans le corps principal de la data class?

sobes.tech IA

Réponse de l'IA

En Kotlin, les champs déclarés dans le constructeur principal (entre parenthèses après le nom de la classe) deviennent automatiquement des propriétés de la classe avec des méthodes correspondantes equals(), hashCode(), toString(), et participent également à la destructuration.

Exemple :

data class User(val name: String, val age: Int)

Ici, name et age sont des propriétés de la classe.

Si un champ est déclaré à l’intérieur du corps de la classe (par exemple, dans le constructeur ou comme propriété normale), il ne participera pas aux méthodes data class générées automatiquement et ne fera pas partie de la destructuration :

data class User(val name: String) {
    var age: Int = 0
}

Ici, age est une propriété normale, non prise en compte dans equals et autres méthodes.

Ainsi, déclarer dans le constructeur principal fait du champ une partie des "données" de la classe, tandis que le déclarer à l’intérieur du corps est simplement une propriété supplémentaire.