Junior — Middle
Kotlin-də sealed class istifadə etmək üçün hansı hallarda enum əvəzinə üstünlük verilir?
sobes.tech Süni İntellekt
AI-dan cavab
Kotlin-də sealed class, sadə sabitlər toplusu deyil, müxtəlif məlumat strukturları və davranışları ilə məhdudlaşdırılmış tiplər toplusunu təsvir etmək üçün enum-dən üstün tutulur.
Fərqlər və sealed class istifadə zamanı:
- Fərqli məlumatlar variantlarda: Enum-da bütün elementlər eyni tipli sabitlərdir, halbuki sealed class hər bir alt sinfə öz xüsusiyyətləri və metodları ilə imkan verir.
- Miras və genişləndirmə: Sealed class məhdud sayda mirasçıya malik əsas sinfdir və hierarxiyaları ifadə etmək üçün əlverişlidir.
- When-də istifadə: Kompilyator sealed class üçün when-in tamlığını yoxlayır, bu da təhlükəsizliyi artırır.
Sealed class nümunəsi:
sealed class Nəticə {
data class Uğur(val məlumatlar: String) : Nəticə()
data class Xəta(val xəta: Throwable) : Nəticə()
object Yüklənir : Nəticə()
}
fun nəticəniİdarəEt(nəticə: Nəticə) {
when(nəticə) {
is Nəticə.Uğur -> println("Məlumatlar: ${nəticə.məlumatlar}")
is Nəticə.Xəta -> println("Xəta: ${nəticə.xəta.message}")
Nəticə.Yüklənir -> println("Yüklənir...")
}
}
Əgər sadəcə sabitlər siyahısı lazımdırsa, enum daha sadə və effektivdir.