Sobes.tech
Junior

Πώς να υλοποιήσετε και να χρησιμοποιήσετε τις data-classes σε Kotlin;

sobes.tech AI

Απάντηση από AI

Οι κλάσεις δεδομένων χρησιμοποιούνται για την αποθήκευση δεδομένων. Ο μεταγλωττιστής δημιουργεί αυτόματα χρήσιμες μεθόδους για αυτές, όπως equals(), hashCode(), toString(), copy() και τις λειτουργίες componentN().

Εφαρμογή: δήλωση της κλάσης με το πρόθεμα data.

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

Χρήση:

Δημιουργία στιγμιότυπου:

val user = User("Alice", 30)

Πρόσβαση στις ιδιότητες:

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

Χρήση των παραγόμενων μεθόδων:

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

άλλοςUser = User("Alice", 30)
println(user == anotherUser) // true (γεννήθηκε το `equals()`)

παλαιότεροςUser = user.copy(age = 31) // User(name=Alice, age=31)

το όνομαΧρήστη, ηλικίαΧρήστη = user // Αποσυσκευασία
println("Όνομα: $όνομαΧρήστη, Ηλικία: $ηλικίαΧρήστη") // Όνομα: Alice, Ηλικία: 30

Χαρακτηριστικά:

  • Όλες οι παράμετροι του κύριου κατασκευαστή πρέπει να είναι val ή var.
  • Οι κλάσεις δεδομένων δεν μπορούν να είναι abstract, open, sealed ή inner.
  • Οι ιδιότητες του σώματος της κλάσης δεν συμμετέχουν στη δημιουργία μεθόδων (equals, hashCode, copy, componentN()).
data class Person(val name: String) {
    var height: Int = 0 // Δεν συμμετέχει σε equals/hashCode/copy/componentN
}

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