Sobes.tech
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.