Sobes.tech
Junior

Hoe implementeer en gebruik je data-classes in Kotlin?

sobes.tech AI

Antwoord van AI

Datalessen worden gebruikt om gegevens op te slaan. De compiler genereert automatisch nuttige methoden voor hen, zoals equals(), hashCode(), toString(), copy() en componentN() functies.

Implementatie: verklaring van de klasse met het prefix data.

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

Gebruik:

Aanmaken van een instantie:

val user = User("Alice", 30)

Toegang tot eigenschappen:

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

Gebruik van gegenereerde methoden:

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

val anotherUser = User("Alice", 30)
println(user == anotherUser) // true (equals() gegenereerd)

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

val (userName, userAge) = user // Destructurering
println("Naam: $userName, Leeftijd: $userAge") // Naam: Alice, Leeftijd: 30

Kenmerken:

  • Alle primaire constructor parameters moeten val of var zijn.
  • Data-klassen kunnen niet abstract, open, sealed of inner zijn.
  • Eigenschappen uit de klasse body doen niet mee aan de generatie van methoden (equals, hashCode, copy, componentN).
data class Person(val name: String) {
    var height: Int = 0 // Neemt niet deel aan equals/hashCode/copy/componentN
}

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