Sobes.tech
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...")
    }
}