Sobes.tech
Junior — Middle

Kādās situācijās ir vēlams izmantot sealed class vietā enum Kotlin?

sobes.tech AI

Atbilde no AI

Kotlin val sealed klase ir priekš enum, kad nepieciešams aprakstīt ierobežotu tipu kopumu ar dažādām datu struktūrām un uzvedību, ne tikai konstantes.

Atšķirības un kad izmantot sealed klasi:

  • Dažādi dati variantiem: Enum visi elementi ir vienāda tipa konstantes, bet sealed klase ļauj katrai apakšklasei būt ar savām īpašībām un metodēm.
  • Mantošana un paplašināmība: Sealed klase ir pamata klase ar ierobežotu mantoju skaitu, kas ir noderīgi hierarhiju izteikšanai.
  • Izmantošanā in when: Kompilators pārbauda when pilnīgumu sealed klases gadījumā, tas palielina drošību.

Piemērs sealed klase:

sealed class Rezultāts {
    data class Panākums(val dati: String) : Rezultāts()
    data class Kļūda(val kļūda: Throwable) : Rezultāts()
    object Ielāde : Rezultāts()
}

fun apstrādātRezultātu(rezultāts: Rezultāts) {
    when(rezultāts) {
        is Rezultāts.Panākums -> println("Dati: ${rezultāts.dati}")
        is Rezultāts.Kļūda -> println("Kļūda: ${rezultāts.kļūda.message}")
        Rezultāts.Ielāde -> println("Ielādējas...")
    }
}

Ja jums ir nepieciešams tikai fiksētu konstanti saraksts bez datiem, enum ir vienkāršāks un efektīvāks.