Junior — Middle
În ce cazuri este preferabil să folosiți sealed class în loc de enum în Kotlin?
sobes.tech AI
Răspuns de la AI
Clasa sealed în Kotlin este preferabilă față de enum atunci când trebuie să descrii un set limitat de tipuri cu structuri de date și comportamente diferite, și nu doar un set de constante.
Diferențe și când să folosești o clasă sealed:
- Date diferite pentru variante: În enum, toate elementele sunt constante ale aceluiași tip, în timp ce sealed class permite fiecărei subclase să aibă propriile proprietăți și metode.
- Moștenire și extensibilitate: Clasa sealed este o clasă de bază cu un număr limitat de moștenitori, utilă pentru exprimarea ierarhiilor.
- Utilizare în when: Compilatorul verifică exhaustivitatea în when pentru sealed class, sporind siguranța.
Exemplu de sealed class:
sealed class Rezultat {
data class Succes(val date: String) : Rezultat()
data class Eroare(val eroare: Throwable) : Rezultat()
object Incarcare : Rezultat()
}
fun gestioneazaRezultat(rezultat: Rezultat) {
when(rezultat) {
is Rezultat.Succes -> println("Date: ${rezultat.date}")
is Rezultat.Eroare -> println("Eroare: ${rezultat.eroare.message}")
Rezultat.Incarcare -> println("Se încarcă...")
}
}
Dacă ai nevoie doar de o enumerare de constante fixe fără date, enum va fi mai simplu și mai eficient.