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ınArray-ini qaytarır.enumValueOf<T>(name: String): Verilən adla enum konstantasını qaytarır. Əgər tapılmazsa,IllegalArgumentExceptionatır.
fun main() { val allPriorities = enumValues<Priority>() println(allPriorities.joinToString()) // Çıxış: LOW, MEDIUM, HIGH val highPriority = enumValueOf<Priority>("HIGH") println(highPriority) // Çıxış: HIGH } whenifadə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.