Junior — Middle
W jakich przypadkach i w jakim miejscu można zadeklarować podklasy, jeśli klasa jest oznaczona jako sealed?
sobes.tech AI
Odpowiedź od AI
W Kotlinie klasa oznaczona jako sealed ogranicza hierarchię dziedziczenia: wszystkie podklasy takiej klasy muszą być zadeklarowane w tym samym pliku co sama klasa sealed. Pozwala to kompilatorowi znać pełny zestaw dziedziczących i używać tego, na przykład, w wyrażeniach when bez konieczności pisania gałęzi else.
Czyli podklasy klasy sealed można deklarować:
- W tym samym pliku, w którym zadeklarowano klasę
sealed. - Wewnątrz samej klasy
sealed(klasy zagnieżdżone).
Przykład:
sealed class Result {
class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()
}
Lub
sealed class Result
class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()
Ale wszystkie te podklasy muszą znajdować się w tym samym pliku co klasa sealed. To ograniczenie pomaga zapewnić bezpieczeństwo typów i pełność sprawdzeń.