Sobes.tech
Junior — Middle

In welke gevallen en op welke plek kunnen subklassen worden gedeclareerd als de klasse als sealed is gemarkeerd?

sobes.tech AI

Antwoord van AI

In Kotlin beperkt een sealed klasse de erfvolgorde: alle subklassen van die klasse moeten in hetzelfde bestand worden gedeclareerd als de sealed klasse zelf. Dit stelt de compiler in staat om de volledige set van erfgenamen te kennen en deze te gebruiken, bijvoorbeeld in when-uitdrukkingen zonder dat een else-tak hoeft te worden geschreven.

Dat wil zeggen, subklassen van een sealed-klasse kunnen worden gedeclareerd:

  • In hetzelfde bestand waarin de sealed-klasse is gedeclareerd.
  • Binnen de sealed-klasse zelf (geneste klassen).

Voorbeeld:

sealed class Result {
    class Success(val data: String) : Result()
    class Error(val error: Throwable) : Result()
}

Of

sealed class Result

class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()

Maar al deze subklassen moeten zich in hetzelfde bestand bevinden als de sealed-klasse. Deze beperking helpt bij het waarborgen van typeveiligheid en volledigheid van controles.