Sobes.tech
Junior — Middle

Na czym polega cel klasy zadeklarowanej za pomocą modyfikatora sealed?

sobes.tech AI

Odpowiedź od AI

Klasa zadeklarowana z modyfikatorem sealed jest przeznaczona do ograniczenia dziedziczenia. Taka klasa może mieć podklasy, ale tylko te, które są zadeklarowane w tym samym pliku. Pozwala to na kontrolowanie i ustalanie hierarchii dziedziczenia, czyniąc ją bardziej przewidywalną i bezpieczną.

Na przykład w Kotlinie klasy sealed są często używane do reprezentowania ograniczonego zestawu stanów lub wariantów, co jest wygodne podczas pracy z wyrażeniami when, gdzie kompilator może sprawdzić kompletność obsługi wszystkich wariantów.

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

fun handleResult(result: Result) {
    when(result) {
        is Result.Success -> println("Dane: ${result.data}")
        is Result.Error -> println("Błąd: ${result.error.message}")
    }
}