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
sealedosztályt deklarálták. - A
sealedosztá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.