Junior
Πώς λειτουργούν οι κλάσεις δεδομένων στο Kotlin;
sobes.tech AI
Απάντηση από AI
Οι κλάσεις δεδομένων σε Kotlin χρησιμοποιούνται για την αποθήκευση δεδομένων. Ο μεταγλωττιστής δημιουργεί αυτόματα τις τυπικές μεθόδους:
equals(): Συγκρίνει τις περιπτώσεις βάσει των τιμών των ιδιοτήτων τους.hashCode(): Δημιουργεί έναν κωδικό κατακερματισμού βάσει των τιμών των ιδιοτήτων.toString(): Επιστρέφει μια αναπαράσταση σε συμβολοσειρά που περιλαμβάνει τα ονόματα και τις τιμές όλων των ιδιοτήτων.copy(): Δημιουργεί ένα αντίγραφο του αντικειμένου, τροποποιώντας αν χρειάζεται τις τιμές των υποδεικνυόμενων ιδιοτήτων.componentN(): Μέθοδοι για αποδόμηση (destructuring) του αντικειμένου σε μεμονωμένες ιδιότητες.
// Παράδειγμα κλάσης δεδομένων
data class User(val name: String, val age: Int)
fun main() {
val user1 = User("Alice", 30)
val user2 = User("Alice", 30)
val user3 = User("Bob", 25)
// equals()
println(user1 == user2) // true
println(user1 == user3) // false
// toString()
println(user1.toString()) // User(name=Alice, age=30)
// copy()
val user4 = user1.copy(age = 31)
println(user4) // User(name=Alice, age=31)
// componentN() και αποδόμηση
val (name, age) = user1
println("Όνομα: $name, Ηλικία: $age") // Όνομα: Alice, Ηλικία: 30
}
Βασικά σημεία:
- Όλες οι ιδιότητες που ορίζονται στον κύριο κατασκευαστή πρέπει να είναι
valήvar. - Η κλάση δεδομένων δεν μπορεί να είναι
abstract,open,sealedήinner. - Οι κλάσεις δεδομένων μπορούν να κληρονομήσουν άλλες κλάσεις ή να υλοποιήσουν διεπαφές.
- Οι ιδιότητες που δηλώνονται εκτός του κύριου κατασκευαστή δεν συμμετέχουν στη δημιουργία των τυπικών μεθόδων.
| Μέθοδος | Περιγραφή |
|---|---|
equals() |
Συγκρίνει τις ιδιότητες του κύριου κατασκευαστή. |
hashCode() |
Δημιουργεί ένα hash βάσει των ιδιοτήτων του κύριου κατασκευαστή. |
toString() |
Εμφανίζει μια αναπαράσταση σε συμβολοσειρά των ιδιοτήτων του κύριου κατασκευαστή. |
copy() |
Δημιουργεί μια επιφανειακή αντιγραφή με δυνατότητα τροποποίησης των ιδιοτήτων. |
componentN() |
Πρόσβαση στις ιδιότητες με τη σειρά δήλωσής τους στον κατασκευαστή. |
Οι κλάσεις δεδομένων απλοποιούν σημαντικά τη δουλειά με POJO (Plain Old Java Object) ή DTO (Data Transfer Object), μειώνοντας τον κώδικα boilerplate.