Sobes.tech
Junior

Comment implémenter et utiliser des classes de données en Kotlin?

sobes.tech IA

Réponse de l'IA

Les classes de données sont utilisées pour stocker des données. Le compilateur génère automatiquement pour elles des méthodes utiles telles que equals(), hashCode(), toString(), copy() et les fonctions componentN().

Implémentation : déclaration de la classe avec le préfixe data.

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

Utilisation :

Création d'une instance :

val user = User("Alice", 30)

Accès aux propriétés :

val name = user.name // Alice
val age = user.age   // 30

Utilisation des méthodes générées :

println(user.toString()) // User(name=Alice, age=30)

val anotherUser = User("Alice", 30)
println(user == anotherUser) // true (equals() généré)

val olderUser = user.copy(age = 31) // User(name=Alice, age=31)

val (userName, userAge) = user // Déstructuration
println("Name: $userName, Age: $userAge") // Name: Alice, Age: 30

Caractéristiques :

  • Tous les paramètres du constructeur principal doivent être val ou var.
  • Les classes de données ne peuvent pas être abstract, open, sealed ou inner.
  • Les propriétés du corps de la classe ne participent pas à la génération des méthodes (equals, hashCode, copy, componentN).
data class Person(val name: String) {
    var height: Int = 0 // Ne participe pas à equals/hashCode/copy/componentN
}

val p1 = Person("Bob")
p1.height = 180
val p2 = Person("Bob")
p2.height = 190
println(p1 == p2) // true