Sobes.tech
Junior

Come implementare e usare le classi di dati in Kotlin?

sobes.tech AI

Risposta dell'AI

Le classi dati vengono utilizzate per memorizzare i dati. Il compilatore genera automaticamente metodi utili come equals(), hashCode(), toString(), copy() e funzioni componentN().

Implementazione: dichiarazione della classe con il prefisso data.

data class User(val name: String, val age: Int)

Utilizzo:

Creazione di un'istanza:

val user = User("Alice", 30)

Accesso alle proprietà:

val name = user.name // Alice
val age = user.age   // 30

Utilizzo dei metodi generati:

println(user.toString()) // User(name=Alice, age=30)

val anotherUser = User("Alice", 30)
println(user == anotherUser) // true (equals() generato)

val olderUser = user.copy(age = 31) // User(name=Alice, age=31)

val (userName, userAge) = user // Destrutturazione
println("Nome: $userName, Età: $userAge") // Nome: Alice, Età: 30

Caratteristiche:

  • Tutti i parametri del costruttore principale devono essere val o var.
  • Le classi dati non possono essere abstract, open, sealed o inner.
  • Le proprietà del corpo della classe non partecipano alla generazione di metodi (equals, hashCode, copy, componentN).
data class Person(val name: String) {
    var height: Int = 0 // Non partecipa a equals/hashCode/copy/componentN
}

val p1 = Person("Bob")
p1.height = 180
val p2 = Person("Bob")
p2.height = 190
println(p1 == p2) // true