Sobes.tech
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() en componentN().
  • Vereisen minimaal één parameter in de constructor.
  • Alle constructorparameters moeten worden gedeclareerd als val of var.
  • 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
}