Junior — Middle
Jakie znasz zalety i scenariusze użycia klasy sealed w Kotlin?
sobes.tech AI
Odpowiedź od AI
Klasa sealed w Kotlinie jest używana do ograniczenia hierarchii dziedziczenia. Wszystkie podklasy klasy sealed muszą być zadeklarowane w tym samym pliku co sama klasa sealed. Umożliwia to kompilatorowi poznanie wszystkich możliwych wariantów dziedziczących, co jest wygodne przy używaniu w wyrażeniach when bez konieczności pisania gałęzi else.
Zalety:
- Bezpieczeństwo typów: kompilator sprawdza kompletność obsługi wszystkich wariantów.
- Przydatne do modelowania ograniczonych zbiorów stanów lub zdarzeń.
Scenariusze użycia:
- Implementacja stanów w wzorcu "stan".
- Obsługa zdarzeń lub poleceń.
- Reprezentacja ograniczonego zbioru opcji, np. odpowiedzi API.
Przykład:
sealed class Result {
data class Success(val data: String) : Result()
data class Error(val error: Throwable) : Result()
object Loading : Result()
}
fun handleResult(result: Result) {
when(result) {
is Result.Success -> println("Dane: ${result.data}")
is Result.Error -> println("Błąd: ${result.error.message}")
Result.Loading -> println("Ładowanie...")
}
}