Middle
Kādas ir darba ar Enum klasēm Kotlin?
sobes.tech AI
Atbilde no AI
Enum klase ir īpaša klases veids, ko izmanto, lai attēlotu konstantes.
Īpatnības:
- Konstantu definēšana: Katra enum konstante ir enum klases instances.
enum class Color { RED, GREEN, BLUE } - Īpašības un metodes: Enum klases var saturēt īpašības un metodes. Katra konstante var tos īstenot dažādi.
enum class Status(val description: String) { SUCCESS("Operācija veiksmīgi pabeigta"), ERROR("Radās kļūda"), PENDING("Gaida") } enum class Direction { NORTH, SOUTH, EAST, WEST; fun getOpposite(): Direction { return when (this) { NORTH -> SOUTH SOUTH -> NORTH EAST -> WEST WEST -> EAST } } } - Anonīmi klases: Katru enum konstanti var deklarēt ar anonīmu klasi, kas nodrošina savu metožu vai īpašību īstenojumu.
enum class State { IDLE { override fun signal() = READY }, READY { override fun signal() = IDLE }; // Punctu un komatu ir obligāti pirms klases locekļu deklarēšanas abstract fun signal(): State } - Interfeisu īstenošana: Enum klases var īstenot interfeisus.
interface Printable { fun printName() } enum class Shape : Printable { CIRCLE { override fun printName() { println("Aplis") } }, SQUARE { override fun printName() { println("Kvadrāts") } } } - Iebūvētas īpašības: Katrai konstantei ir iebūvētas īpašības
name(konstantes nosaukums kā virkne) unordinal(konstantes pozīcija deklarācijā, sākot no 0).enum class Priority { LOW, MEDIUM, HIGH } fun main() { println(Priority.MEDIUM.name) // Izvade: MEDIUM println(Priority.HIGH.ordinal) // Izvade: 2 } - Iebūvētas funkcijas:
enumValues<T>(): AtgriežArrayar visām enum konstancēm.enumValueOf<T>(name: String): Atrodi enum konstanti ar norādīto nosaukumu. IzmetIllegalArgumentException, ja konstante nav atrasta.
fun main() { val allPriorities = enumValues<Priority>() println(allPriorities.joinToString()) // Izvade: LOW, MEDIUM, HIGH val highPriority = enumValueOf<Priority>("HIGH") println(highPriority) // Izvade: HIGH } - Izmantošana
whenizteiksmēs: Ideāli piemērots lietošanaiwhen. Kompilators brīdinās, ja nav apēstas visas iespējas (lietošanai ar atgriešanas izteiksmi).fun processStatus(status: Status) { when (status) { Status.SUCCESS -> println("Veiksmīgi") Status.ERROR -> println("Kļūda") Status.PENDING -> println("Gaidīšana") } }
Kotlin enum ir jaudīgāki nekā to analogi Java, ļaujot pievienot īpašības, metodes un īstenot interfeisus.