Sobes.tech
Junior — Middle

Milyen esetekben és hol lehet alosztályokat deklarálni, ha az osztályt sealed-ként jelölték meg?

sobes.tech MI

Válasz az MI-től

Kotlinban a sealed osztály korlátozza az öröklődési hierarchiát: az ilyen osztály összes alosztályát ugyanabban a fájlban kell deklarálni, mint a sealed osztályt. Ez lehetővé teszi a fordítónak, hogy ismerje az összes örököst, és például a when kifejezésekben használja őket anélkül, hogy else ágat kellene írni.

Vagyis a sealed osztály alosztályait így lehet deklarálni:

  • Ugyanabban a fájlban, ahol a sealed osztályt deklarálták.
  • A sealed osztályon belül (beágyazott osztályok).

Példa:

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

Vagy

sealed class Result

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

De ezeknek az alosztályoknak ugyanabban a fájlban kell lenniük, mint a sealed osztálynak. Ez a korlátozás segít a típusbiztonság és a teljesség ellenőrzésében.