Junior — Middle
In welke gevallen is het beter om sealed class te gebruiken in plaats van enum in Kotlin?
sobes.tech AI
Antwoord van AI
In Kotlin wordt de sealed class aanbevolen boven enum wanneer je een beperkte set typen met verschillende datastructuren en gedrag moet beschrijven, en niet slechts een set constante waarden.
Verschillen en wanneer gebruik je een sealed class:
- Verschillende data bij varianten: In enum zijn alle elementen constante van hetzelfde type, terwijl een sealed class elke subklasse eigen eigenschappen en methoden kan geven.
- Erfelijkheid en uitbreidbaarheid: Een sealed class is een basisklasse met een beperkt aantal erfgenamen, handig voor het uitdrukken van hiërarchieën.
- Gebruik in when: De compiler controleert de volledigheid van when voor een sealed class, wat de veiligheid verhoogt.
Voorbeeld van een sealed class:
sealed class Resultaat {
data class Succes(val data: String) : Resultaat()
data class Fout(val error: Throwable) : Resultaat()
object Laden : Resultaat()
}
fun verwerkResultaat(result: Resultaat) {
when(result) {
is Resultaat.Succes -> println("Data: ${result.data}")
is Resultaat.Fout -> println("Fout: ${result.error.message}")
Resultaat.Laden -> println("Laden...")
}
}
Als je alleen een lijst van vaste constanten zonder data nodig hebt, is enum eenvoudiger en efficiënter.