Sobes.tech
Middle

Ի՞նչ առանձնահատկություններ ունի Kotlin-ում Enum դասերի հետ աշխատելը։

sobes.tech AI

Պատասխան AI-ից

Էնմ դասը՝ դա հատուկ տեսակի դաս է, որը օգտագործվում է կոնստանտների հավաքածուն ներկայացնելու համար:

Հատկություններ՝

  • Կոնստանտների սահմանում: Յուրաքանչյուր 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>(): Վերադարձնում է բոլոր կոնստանտների զանգվածը:
    • enumValueOf<T>(name: String): Վերադարձնում է կոնստանտը՝ ըստ անվան:
    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("Սպասում")
        }
    }
    

Kotlin-ի enum-ները ավելի հզոր են, քան Java-ի համարժեքները, թույլ տալով ավելացնել հատկություններ, մեթոդներ և իրականացնել ինտերֆեյսներ։