Junior — Middle
V ktorých prípadoch a na akom mieste je možné vyhlásiť podtriedy, ak je trieda označená ako sealed?
sobes.tech AI
Odpoveď od AI
V Kotlinu obmedzená trieda sealed obmedzuje hierarchiu dedičnosti: všetky podtriedy takejto triedy musia byť deklarované v tom istom súbore ako samotná sealed trieda. To umožňuje prekladaču poznať úplný počet dedičov a používať ich napríklad vo výrazoch when bez nutnosti písať vetvu else.
To znamená, že podtriedy sealed triedy môžu byť deklarované:
- V tom istom súbore, kde je deklarovaná
sealedtrieda. - Vo vnútri samotnej
sealedtriedy (vnorené triedy).
Príklad:
sealed class Result {
class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()
}
Alebo
sealed class Result
class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()
Ale všetky tieto podtriedy musia byť v tom istom súbore ako sealed trieda. Toto obmedzenie pomáha zabezpečiť bezpečnosť typov a úplnosť kontrol.