Sobes.tech
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) un ordinal (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ž Array ar visām enum konstancēm.
    • enumValueOf<T>(name: String): Atrodi enum konstanti ar norādīto nosaukumu. Izmet IllegalArgumentException, 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 when izteiksmēs: Ideāli piemērots lietošanai when. 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.