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) veordinal(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. BulunamazsaIllegalArgumentExceptionfırlatır.
fun main() { val allPriorities = enumValues<Priority>() println(allPriorities.joinToString()) // Çıktı: LOW, MEDIUM, HIGH val highPriority = enumValueOf<Priority>("HIGH") println(highPriority) // Çıktı: HIGH } whenifadelerinde kullanımı:wheniç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.