Sobes.tech
Junior

Qual è la caratteristica della Data Class rispetto ad altre classi in Kotlin?

sobes.tech AI

Risposta dell'AI

Caratteristiche della Data Class in Kotlin:

  • Generazione automatica delle funzioni equals(), hashCode(), toString(), copy() e componentN().
  • Richiedono almeno un parametro nel costruttore.
  • Tutti i parametri del costruttore devono essere dichiarati come val o var.
  • Sono principalmente destinate a memorizzare dati.

Esempio:

// Classe normale
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 (confronta i riferimenti di default)
    println(user1.toString()) // Mostrerà qualcosa come User@hashcode

    val dataUser1 = DataUser("Alice", 30)
    val dataUser2 = DataUser("Alice", 30)
    println(dataUser1 == dataUser2) // true (confronta i dati)
    println(dataUser1.toString()) // Mostrerà DataUser(name=Alice, age=30)
}

Differenze nelle funzioni generate:

Funzione Classe normale Data Class
equals() Confronto di riferimenti Confronto dei dati per campi
hashCode() Dipende dall'implementazione Dipende dai dati per campi
toString() Nome della classe e hash Nome della classe e valori dei campi
copy() No (richiede implementazione manuale) Sì (consente di creare copie facilmente)
componentN() No Sì (consente di destrutturare l'oggetto)

Utilizzo di componentN():

// Definizione di una Data Class
data class Point(val x: Int, val y: Int)

fun main() {
    val p = Point(10, 20)
    val (x, y) = p // Destrutturazione usando component1(), component2()
    println("x: $x, y: $y") // Mostrerà x: 10, y: 20
}