Junior
Comment fonctionnent les classes de données en Kotlin?
sobes.tech IA
Réponse de l'IA
Les classes de données en Kotlin sont utilisées pour stocker des données. Le compilateur génère automatiquement les méthodes standard :
equals(): Compare les instances en fonction des valeurs de leurs propriétés.hashCode(): Génère un code de hachage basé sur les valeurs des propriétés.toString(): Renvoie une représentation sous forme de chaîne incluant les noms et valeurs de toutes les propriétés.copy(): Crée une copie de l'objet, en modifiant si nécessaire les valeurs des propriétés indiquées.componentN(): Méthodes pour la déstructuration (décomposition de l'objet en propriétés individuelles).
// Exemple de classe de données
data class User(val name: String, val age: Int)
fun main() {
val user1 = User("Alice", 30)
val user2 = User("Alice", 30)
val user3 = User("Bob", 25)
// equals()
println(user1 == user2) // true
println(user1 == user3) // false
// toString()
println(user1.toString()) // User(name=Alice, age=30)
// copy()
val user4 = user1.copy(age = 31)
println(user4) // User(name=Alice, age=31)
// componentN() et déstructuration
val (name, age) = user1
println("Nom : $name, Âge : $age") // Nom : Alice, Âge : 30
}
Points clés :
- Toutes les propriétés définies dans le constructeur principal doivent être
valouvar. - La classe de données ne peut pas être
abstract,open,sealedouinner. - Les classes de données peuvent hériter d'autres classes ou implémenter des interfaces.
- Les propriétés déclarées en dehors du constructeur principal ne participent pas à la génération des méthodes standard.
| Méthode | Description |
|---|---|
equals() |
Compare les propriétés du constructeur principal. |
hashCode() |
Génère un hash basé sur les propriétés du constructeur principal. |
toString() |
Affiche une représentation en chaîne des propriétés du constructeur principal. |
copy() |
Crée une copie superficielle avec la possibilité de modifier les propriétés. |
componentN() |
Accède aux propriétés dans l'ordre de leur déclaration dans le constructeur. |
Les classes de données simplifient considérablement le travail avec POJO (Plain Old Java Object) ou DTO (Data Transfer Object), en réduisant le code boilerplate.