Sobes.tech
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á sealed trieda.
  • Vo vnútri samotnej sealed triedy (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.