Notions de base des classes de données : méthodes générées automatiquement
Comprenez ce que génère une classe de données : equals, hashCode, toString et copy.
Notions de base des classes de données : méthodes générées automatiquement est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Kotlin Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kotlin Academy comprend 4 leçons au total.
Qu’est-ce qu’une classe de données ?
Une classe de données est une classe dont le but principal est de contenir des valeurs. Le compilateur Kotlin génère automatiquement pour vous les fonctions equals, hashCode, toString, copy et componentN.
Déclarer une classe de données
Préfixez une classe ordinaire avec data. Tous les paramètres du constructeur primaire doivent être val ou var.
data class User(val name: String, val age: Int)
fun main() {
val u = User("Ada", 35)
println(u)
}toString généré automatiquement
Le compilateur crée un toString qui répertorie chaque propriété par son nom.
data class Point(val x: Int, val y: Int)
fun main() {
println(Point(3, 5)) // Point(x=3, y=5)
}equals généré automatiquement
equals compare toutes les valeurs des propriétés : deux instances possédant les mêmes champs sont égales, quelle que soit leur identité de référence.
data class Coord(val lat: Double, val lng: Double)
fun main() {
val a = Coord(41.0, 29.0)
val b = Coord(41.0, 29.0)
println(a == b) // true (structural)
println(a === b) // false (reference)
}hashCode généré automatiquement
hashCode est cohérent avec equals : des objets égaux produisent des hachages égaux. Les classes de données fonctionnent donc correctement dans les ensembles et comme clés de map.
data class Key(val id: Int, val tag: String)
fun main() {
val map = mapOf(Key(1, "a") to "one")
println(map[Key(1, "a")]) // one
}copy généré automatiquement
copy() crée une nouvelle instance avec les mêmes valeurs de champs, ce qui permet de remplacer certains champs à l’aide d’arguments nommés.
data class Config(val host: String, val port: Int, val tls: Boolean)
fun main() {
val dev = Config("localhost", 8080, false)
val prod = dev.copy(host = "prod.example.com", tls = true)
println(prod) // Config(host=prod.example.com, port=8080, tls=true)
}componentN généré automatiquement
Chaque propriété reçoit une fonction componentN() (component1, component2, ...) qui permet la déstructuration.
data class Pair2(val first: String, val second: Int)
fun main() {
val p = Pair2("Ada", 35)
val (name, age) = p
println("$name is $age")
}Ce que les classes de données ne font pas
Les classes de données ne génèrent pas de toString pour les champs hérités, sont final par défaut et ne peuvent pas être abstract, open, sealed ou inner.
data class Sample(val n: Int)
// open data class Bad(...) // ERROR
// sealed data class Bad(...) // ERROR
fun main() { println(Sample(1)) }Propriétés en dehors du constructeur primaire
Les propriétés déclarées dans le corps de la classe ne participent PAS à equals, hashCode, toString ou copy.
data class Person(val name: String) {
var nickname: String = ""
}
fun main() {
val a = Person("Ada").apply { nickname = "Augusta" }
val b = Person("Ada").apply { nickname = "Different" }
println(a == b) // true — only name matters
println(a) // Person(name=Ada)
}Valeurs par défaut
Combinez data class avec des paramètres par défaut pour permettre une construction flexible.
data class Request(
val url: String,
val method: String = "GET",
val headers: Map<String, String> = emptyMap()
)
fun main() {
println(Request("https://api.example.com"))
}Pratique : classe DTO
Les classes de données sont parfaites pour les objets de transfert de données, les réponses d’API et les objets-valeurs.
data class ApiResponse(
val status: Int,
val body: String,
val timestamp: Long
)
fun main() {
val ok = ApiResponse(200, "{}", System.currentTimeMillis())
println(ok)
}Vérification rapide
Quelle méthode n’est PAS générée automatiquement par le compilateur Kotlin pour une classe de données ?
Récapitulatif
Une data class génère automatiquement equals, hashCode, toString, copy et componentN à partir des propriétés de son constructeur primaire. Les propriétés situées en dehors du constructeur sont exclues. Utilisez les classes de données pour les objets de transfert de données, les objets-valeurs et tout conteneur de valeurs associées.
Questions Fréquemment Posées
La leçon « Notions de base des classes de données : méthodes générées automatiquement » est-elle gratuite ?
Oui — le texte complet de « Notions de base des classes de données : méthodes générées automatiquement » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Kotlin Academy, passe à CoddyKit PRO. Le cours Kotlin Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Notions de base des classes de données : méthodes générées automatiquement » ?
Comprenez ce que génère une classe de données : equals, hashCode, toString et copy. Tu pratiques Kotlin Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Kotlin Academy ?
Aucune expérience préalable n'est requise. Kotlin Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Notions de base des classes de données : méthodes générées automatiquement » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Kotlin Academy ?
Oui. Chaque leçon Kotlin Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Notions de base des classes de données : méthodes générées automatiquement
- Copier avec copy() et redéfinitions partielles
- Déclarations déstructurées avec componentN
- Classes de données dans les collections et comme clés de map