Junior
Hoe werken data-classes in Kotlin?
sobes.tech AI
Antwoord van AI
Data-klassen in Kotlin worden gebruikt voor het opslaan van gegevens. De compiler genereert automatisch de standaardmethoden:
equals(): Vergelijkt instanties op basis van de waarden van hun eigenschappen.hashCode(): Genereert een hash-code op basis van de waarden van de eigenschappen.toString(): Geeft een stringrepresentatie terug die de namen en waarden van alle eigenschappen bevat.copy(): Maakt een kopie van het object, waarbij indien nodig de waarden van de aangegeven eigenschappen worden gewijzigd.componentN(): Methoden voor destructurering (ontbinding van het object in individuele eigenschappen).
// Voorbeeld van een data-klasse
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() en destructurering
val (name, age) = user1
println("Naam: $name, Leeftijd: $age") // Naam: Alice, Leeftijd: 30
}
Belangrijke punten:
- Alle eigenschappen die in de hoofdconstructor zijn gedefinieerd, moeten
valofvarzijn. - Data-klassen kunnen niet
abstract,open,sealedofinnerzijn. - Data-klassen kunnen andere klassen erven of interfaces implementeren.
- Eigenschappen die buiten de hoofdconstructor worden gedeclareerd, nemen niet deel aan de generatie van standaardmethoden.
| Methode | Beschrijving |
|---|---|
equals() |
Vergelijkt de eigenschappen van de hoofdconstructor. |
hashCode() |
Genereert een hash op basis van de eigenschappen van de hoofdconstructor. |
toString() |
Toont een stringrepresentatie van de eigenschappen van de hoofdconstructor. |
copy() |
Maakt een oppervlakkige kopie met de mogelijkheid om eigenschappen te wijzigen. |
componentN() |
Toegang tot eigenschappen in de volgorde van hun declaratie in de constructor. |
Data-klassen vereenvoudigen het werken met POJO (Plain Old Java Object) of DTO (Data Transfer Object) aanzienlijk, doordat ze boilerplate-code verminderen.