Middle
Ποια είναι τα χαρακτηριστικά της εργασίας με τις κλάσεις Enum στο Kotlin;
sobes.tech AI
Απάντηση από AI
Τάξη enum — είναι ένας ειδικός τύπος κλάσης που χρησιμοποιείται για την αναπαράσταση ενός συνόλου σταθερών.
Χαρακτηριστικά:
- Ορισμός σταθερών: Κάθε σταθερά της enum είναι ένα παράδειγμα της enum κλάσης.
enum class Color { RED, GREEN, BLUE } - Ιδιότητες και μέθοδοι: Οι enum κλάσεις μπορούν να έχουν ιδιότητες και μεθόδους. Κάθε σταθερά μπορεί να τις υλοποιεί διαφορετικά.
enum class Status(val description: String) { SUCCESS("Η λειτουργία ολοκληρώθηκε με επιτυχία"), ERROR("Παρουσιάστηκε σφάλμα"), PENDING("Αναμονή") } enum class Direction { NORTH, SOUTH, EAST, WEST; fun getOpposite(): Direction { return when (this) { NORTH -> SOUTH SOUTH -> NORTH EAST -> WEST WEST -> EAST } } } - Ανώνυμες κλάσεις: Κάθε σταθερά της enum μπορεί να δηλωθεί με μια ανώνυμη κλάση που παρέχει τις δικές της υλοποιήσεις μεθόδων ή ιδιοτήτων.
enum class State { IDLE { override fun signal() = READY }, READY { override fun signal() = IDLE }; // Υποχρεωτικό το ερωτηματικό πριν από την δήλωση μελών της κλάσης abstract fun signal(): State } - Υλοποίηση διεπαφών: Η enum κλάση μπορεί να υλοποιεί διεπαφές.
interface Printable { fun printName() } enum class Shape : Printable { CIRCLE { override fun printName() { println("Κύκλος") } }, SQUARE { override fun printName() { println("Τετράγωνο") } } } - Ενσωματωμένες ιδιότητες: Κάθε σταθερά έχει ενσωματωμένες ιδιότητες
name(το όνομα της σταθεράς ως συμβολοσειρά) καιordinal(η θέση της σταθεράς στην δήλωση, ξεκινώντας από το 0).enum class Priority { LOW, MEDIUM, HIGH } fun main() { println(Priority.MEDIUM.name) // Εμφάνιση: MEDIUM println(Priority.HIGH.ordinal) // Εμφάνιση: 2 } - Ενσωματωμένες συναρτήσεις:
enumValues<T>(): Επιστρέφει έναArrayόλων των σταθερών της enum.enumValueOf<T>(name: String): Επιστρέφει τη σταθερά της enum με το δοσμένο όνομα. ΡίχνειIllegalArgumentExceptionαν η σταθερά δεν βρεθεί.
fun main() { val allPriorities = enumValues<Priority>() println(allPriorities.joinToString()) // Εμφάνιση: LOW, MEDIUM, HIGH val highPriority = enumValueOf<Priority>("HIGH") println(highPriority) // Εμφάνιση: HIGH } - Χρήση σε εκφράσεις
when: Ιδανικό για χρήση σεwhen. Ο μεταγλωττιστής θα προειδοποιήσει αν δεν καλύπτονται όλες οι περιπτώσεις (όταν χρησιμοποιείται ως έκφραση με επιστρεφόμενη τιμή).fun processStatus(status: Status) { when (status) { Status.SUCCESS -> println("Επιτυχία") Status.ERROR -> println("Σφάλμα") Status.PENDING -> println("Αναμονή") } }
Οι enum στην Kotlin είναι πιο ισχυροί σε σύγκριση με αυτούς στην Java, επιτρέποντας την προσθήκη ιδιοτήτων, μεθόδων και υλοποίηση διεπαφών.