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
valofvarzijn. - Data-klassen kunnen niet
abstract,open,sealedofinnerzijn. - 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