Grundlæggende data classes: Automatisk genererede metoder
Forstå, hvad data class genererer: equals, hashCode, toString og copy.
Grundlæggende data classes: Automatisk genererede metoder er en gratis Kotlin Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Kotlin Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Kotlin Academy-kurset indeholder 4 lektioner i alt.
Hvad er en dataklasse?
En dataklasse er en klasse, hvis primære formål er at indeholde værdier. Kotlin-kompileren genererer automatisk funktionerne equals, hashCode, toString, copy og componentN for dig.
Deklaration af en dataklasse
Sæt data foran en almindelig klasse. Alle parametre i den primære konstruktør skal være val eller var.
data class User(val name: String, val age: Int)
fun main() {
val u = User("Ada", 35)
println(u)
}Automatisk genereret toString
Kompileren opretter en toString, der viser alle egenskaber med deres navne.
data class Point(val x: Int, val y: Int)
fun main() {
println(Point(3, 5)) // Point(x=3, y=5)
}Automatisk genereret equals
equals sammenligner alle egenskabernes værdier – to instanser med de samme felter er ens uanset deres referencer.
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)
}Automatisk genereret hashCode
hashCode er konsistent med equals: Ens objekter giver samme hashværdier, så dataklasser fungerer korrekt i sæt og som Map-nøgler.
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
}Automatisk genereret copy
copy() opretter en ny instans med de samme feltværdier, så du kan tilsidesætte enkelte felter ved hjælp af navngivne argumenter.
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)
}Automatisk genereret componentN
Hver egenskab får en componentN()-funktion (component1, component2, ...), som muliggør destrukturering.
data class Pair2(val first: String, val second: Int)
fun main() {
val p = Pair2("Ada", 35)
val (name, age) = p
println("$name is $age")
}Hvad dataklasser ikke gør
Dataklasser genererer ikke toString for nedarvede felter, er som standard final og kan ikke være abstract, open, sealed eller inner.
data class Sample(val n: Int)
// open data class Bad(...) // ERROR
// sealed data class Bad(...) // ERROR
fun main() { println(Sample(1)) }Egenskaber uden for den primære konstruktør
Egenskaber, der deklareres i klassens krop, deltager IKKE i equals, hashCode, toString eller 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)
}Standardværdier
Kombinér data class med standardparametre for fleksibel konstruktion.
data class Request(
val url: String,
val method: String = "GET",
val headers: Map<String, String> = emptyMap()
)
fun main() {
println(Request("https://api.example.com"))
}Praktisk: DTO-klasse
Dataklasser er perfekte til DTO'er, API-svar og værdibjekter.
data class ApiResponse(
val status: Int,
val body: String,
val timestamp: Long
)
fun main() {
val ok = ApiResponse(200, "{}", System.currentTimeMillis())
println(ok)
}Hurtigt tjek
Hvilken metode genereres IKKE automatisk af Kotlin-kompileren for en dataklasse?
Opsummering
En data class genererer automatisk equals, hashCode, toString, copy og componentN ud fra egenskaberne i den primære konstruktør. Egenskaber uden for konstruktøren udelades. Brug dataklasser til DTO'er, værdibjekter og alle beholdere med relaterede værdier.
Lær Kotlin med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 51
- Lektioner
- 203
Ofte stillede spørgsmål
Er lektionen “Grundlæggende data classes: Automatisk genererede metoder” gratis?
Ja — alle 3 lektioner i læringssporet Kotlin Academy, inklusive “Grundlæggende data classes: Automatisk genererede metoder”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Kotlin Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Grundlæggende data classes: Automatisk genererede metoder”?
Forstå, hvad data class genererer: equals, hashCode, toString og copy. Du øver dig i Kotlin Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Kotlin Academy?
Der kræves ingen tidligere erfaring. Kotlin Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Grundlæggende data classes: Automatisk genererede metoder”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Kotlin Academy-lektion?
Ja. Alle Kotlin Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Grundlæggende data classes: Automatisk genererede metoder
- Kopiering med copy() og delvise tilsidesættelser
- Destrukturerende deklarationer med componentN
- Data classes i samlinger og som map-nøgler