Leg uit wat gesloten klassen in Kotlin zijn en hoe ze worden gebruikt
sobes.tech AI
Antwoord van AI
In Kotlin bestaat er geen specifiek concept van "gesloten klassen" (closed classes) als een apart type, maar er is een vergelijkbaar concept: sealed classes (gezegelde klassen).
Een sealed klasse beperkt de erfhiërarchie: alle subklassen van zo'n klasse moeten in hetzelfde bestand worden gedeclareerd. Dit stelt de compiler in staat om alle mogelijke subklassen te kennen en deze te gebruiken, bijvoorbeeld in when-uitdrukkingen, zonder een else-tak te hoeven schrijven.
Het gebruik van sealed classes is handig voor het modelleren van een beperkte set opties, zoals staten of gebeurtenissen.
Voorbeeld:
sealed class Result {
data class Success(val data: String) : Result()
data class Error(val error: Throwable) : Result()
}
fun handleResult(result: Result) {
when(result) {
is Result.Success -> println("Data: ${result.data}")
is Result.Error -> println("Fout: ${result.error.message}")
}
}
Als "gesloten klassen" verwijst naar klassen met de modifier private of internal, dan zijn dat klassen met beperkte zichtbaarheid: private — alleen zichtbaar binnen hetzelfde bestand, internal — binnen de module.