Sobes.tech
Middle

Kotlin-də Enum sinifləri ilə işləməyin xüsusiyyətləri hansılardır?

sobes.tech Süni İntellekt

AI-dan cavab

Enum sinfi — bu xüsusi sinf növüdür və sabitlər toplusunu təmsil etmək üçün istifadə olunur.

Xüsusiyyətlər:

  • Sabitlərin təyini: Hər bir enum sabiti enum sinfinin nümunəsidir.
    enum class Color {
        RED, GREEN, BLUE
    }
    
  • Xüsusiyyətlər və metodlar: Enum sinflər xassələr və metodlar ola bilər. Hər bir sabit onları fərqli şəkildə həyata keçirə bilər.
    enum class Status(val description: String) {
        SUCCESS("Əməliyyat uğurla tamamlandı"),
        ERROR("Xəta baş verdi"),
        PENDING("Gözləyir")
    }
    
    enum class Direction {
        NORTH, SOUTH, EAST, WEST;
    
        fun getOpposite(): Direction {
            return when (this) {
                NORTH -> SOUTH
                SOUTH -> NORTH
                EAST -> WEST
                WEST -> EAST
            }
        }
    }
    
  • Anonim sinflər: Hər enum sabiti, öz metod və ya xassələrini təmin edən anonim sinf ilə elan edilə bilər.
    enum class State {
        IDLE {
            override fun signal() = READY
        },
        READY {
            override fun signal() = IDLE
        }; // Nöqtə və vergül sinif üzvlərini elan etməzdən əvvəl vacibdir
    
        abstract fun signal(): State
    }
    
  • İnterfeyslərin həyata keçirilməsi: Enum sinfi interfeysləri həyata keçirə bilər.
    interface Printable {
        fun printName()
    }
    
    enum class Shape : Printable {
        CIRCLE {
            override fun printName() {
                println("Dairə")
            }
        },
        SQUARE {
            override fun printName() {
                println("Dördbucaq")
            }
        }
    }
    
  • Daxili xassələr: Hər bir sabit, daxili name (sətir kimi sabit adı) və ordinal (deklarasiyada yerləşdiyi mövqe, 0-dan başlayır) xüsusiyyətlərinə malikdir.
    enum class Priority {
        LOW, MEDIUM, HIGH
    }
    
    fun main() {
        println(Priority.MEDIUM.name)    // Çıxış: MEDIUM
        println(Priority.HIGH.ordinal) // Çıxış: 2
    }
    
  • Daxili funksiyalar:
    • enumValues<T>(): Enum sinfindəki bütün konstantaların Array-ini qaytarır.
    • enumValueOf<T>(name: String): Verilən adla enum konstantasını qaytarır. Əgər tapılmazsa, IllegalArgumentException atır.
    fun main() {
        val allPriorities = enumValues<Priority>()
        println(allPriorities.joinToString()) // Çıxış: LOW, MEDIUM, HIGH
    
        val highPriority = enumValueOf<Priority>("HIGH")
        println(highPriority) // Çıxış: HIGH
    }
    
  • when ifadələrində istifadə: when üçün idealdır. Əgər bütün şaxlar əhatə olunmayıbsa, (dəyər ilə ifadə kimi istifadə ediləndə) kompilyator xəbərdarlıq edəcək.
    fun processStatus(status: Status) {
        when (status) {
            Status.SUCCESS -> println("Uğurlu")
            Status.ERROR -> println("Xəta")
            Status.PENDING -> println("Gözləyir")
        }
    }
    

Kotlin-də enumlar Java-dakı analoqlarından daha güclüdür, xüsusiyyətlər əlavə etməyə, metodlar və interfeyslər həyata keçirməyə imkan verir.