Junior
Wat is de eigenschap van Data Class in vergelijking met andere klassen in Kotlin?
sobes.tech AI
Antwoord van AI
Kenmerken van Data Class in Kotlin:
- Automatische generatie van functies
equals(),hashCode(),toString(),copy()encomponentN(). - Vereisen minimaal één parameter in de constructor.
- Alle constructorparameters moeten worden gedeclareerd als
valofvar. - Ontworpen voor het opslaan van gegevens.
Voorbeeld:
// Normale klasse
class User(val name: String, val age: Int)
// Data Class
data class DataUser(val name: String, val age: Int)
fun main() {
val user1 = User("Alice", 30)
val user2 = User("Alice", 30)
println(user1 == user2) // false (vergelijk standaard referenties)
println(user1.toString()) // Zal iets tonen als User@hashcode
val dataUser1 = DataUser("Alice", 30)
val dataUser2 = DataUser("Alice", 30)
println(dataUser1 == dataUser2) // true (vergelijk gegevens)
println(dataUser1.toString()) // Zal DataUser(name=Alice, age=30) tonen
}
Verschillen in de gegenereerde functies:
| Functie | Normale klasse | Data Class |
|---|---|---|
equals() |
Vergelijking van referenties | Vergelijking van gegevens per veld |
hashCode() |
Afhankelijk van implementatie | Afhankelijk van veldgegevens |
toString() |
Klassennaam en hash | Klassennaam en veldwaarden |
copy() |
Nee (handmatige implementatie vereist) | Ja (makkelijk kopieën maken) |
componentN() |
Nee | Ja (object destructureren mogelijk) |
Gebruik van componentN():
// Definieer een Data Class
data class Point(val x: Int, val y: Int)
fun main() {
val p = Point(10, 20)
val (x, y) = p // Destructureren met component1(), component2()
println("x: $x, y: $y") // Zal x: 10, y: 20 tonen
}