Sobes.tech
Middle

Kotlin'de Enum sınıflarıyla çalışmanın özellikleri nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Enum sınıfı, sabitler kümesini temsil etmek için kullanılan özel bir sınıf türüdür.

Özellikler:

  • Sabitlerin Tanımı: Her enum sabiti, enum sınıfının bir örneğidir.
    enum class Color {
        RED, GREEN, BLUE
    }
    
  • Özellikler ve Metodlar: Enum sınıfları özellikler ve metodlar içerebilir. Her sabit bunları farklı şekilde uygulayabilir.
    enum class Status(val description: String) {
        SUCCESS("Başarıyla tamamlandı"),
        ERROR("Bir hata oluştu"),
        PENDING("Beklemede")
    }
    
    enum class Direction {
        NORTH, SOUTH, EAST, WEST;
    
        fun getOpposite(): Direction {
            return when (this) {
                NORTH -> SOUTH
                SOUTH -> NORTH
                EAST -> WEST
                WEST -> EAST
            }
        }
    }
    
  • Anonim Sınıflar: Her enum sabiti, metodlar veya özellikler sağlayan anonim bir sınıf ile bildirilebilir.
    enum class State {
        IDLE {
            override fun signal() = READY
        },
        READY {
            override fun signal() = IDLE
        }; // Noktalı virgül, sınıf üyeleri bildirilmeden önce zorunludur
    
        abstract fun signal(): State
    }
    
  • Arayüzlerin Uygulanması: Enum sınıfı arayüzleri uygulayabilir.
    interface Printable {
        fun printName()
    }
    
    enum class Shape : Printable {
        CIRCLE {
            override fun printName() {
                println("Daire")
            }
        },
        SQUARE {
            override fun printName() {
                println("Kare")
            }
        }
    }
    
  • Yerleşik Özellikler: Her sabit, yerleşik name (sabitin adı string olarak) ve ordinal (declaration'daki konumu, 0'dan başlar) özelliklerine sahiptir.
    enum class Priority {
        LOW, MEDIUM, HIGH
    }
    
    fun main() {
        println(Priority.MEDIUM.name)    // Çıktı: MEDIUM
        println(Priority.HIGH.ordinal) // Çıktı: 2
    }
    
  • Yerleşik Fonksiyonlar:
    • enumValues<T>(): Enum sınıfındaki tüm sabitleri içeren bir dizi döndürür.
    • enumValueOf<T>(name: String): Belirtilen isimdeki enum sabitini döndürür. Bulunamazsa IllegalArgumentException fırlatır.
    fun main() {
        val allPriorities = enumValues<Priority>()
        println(allPriorities.joinToString()) // Çıktı: LOW, MEDIUM, HIGH
    
        val highPriority = enumValueOf<Priority>("HIGH")
        println(highPriority) // Çıktı: HIGH
    }
    
  • when ifadelerinde kullanımı: when içinde kullanmak için idealdir. Eğer tüm dallar kapsanmamışsa (bir ifade ile dönüş değeri olarak kullanıldığında) derleyici uyarır.
    fun processStatus(status: Status) {
        when (status) {
            Status.SUCCESS -> println("Başarılı")
            Status.ERROR -> println("Hata")
            Status.PENDING -> println("Beklemede")
        }
    }
    

Kotlin'deki enumlar, özellikler eklemeye, metodlar ve arayüzler uygulamaya olanak tanıyarak Java'daki muadillerinden daha güçlüdür.