Zestawy rozmówBlog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2026 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Kotlin
Kotlinmedium

`sealed class` vs `enum` — kiedy wybrać `sealed`?

Tagi
#sealed#enum#when
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

Wybierz `sealed`, gdy potrzebujesz zamkniętego zestawu wariantów, które mogą nieść różne dane i typy (sum type). Pozwala to na exhaustive `when`, a `enum` to stały zestaw instancji jednego typu.

sealed interface Result

data class Ok(val value: Int) : Result

data class Err(val message: String) : Result

fun handle(r: Result) = when (r) {
  is Ok -> r.value
  is Err -> 0
}

Odpowiedź zaawansowana

Głębiej

`enum` pasuje do małego, stałego zestawu stałych jednego typu (singletony).

`sealed` pasuje, gdy warianty mają różny kształt/dane:

  • `sealed interface Result { data class Ok(val v: Int): Result; data class Err(val msg: String): Result }`

Zalety `sealed`:

  • Exhaustive `when` (kompilator może wymusić obsługę wszystkich przypadków).
  • Każdy wariant może mieć inne pola i zachowanie.

Typowe pułapki

  • Modelowanie payload w enumach (nullable pola/nieczytelny stan).
  • Zapominanie, że sealed jest „zamknięte”: podklasy muszą być w tym samym module/paczce (zależnie od wersji Kotlina).

Powiązane pytania

Kotlin
`when` jako wyrażenie: co znaczy, że jest wyczerpujące (exhaustive)?
#kotlin#when#sealed
Kotlin
Sealed class vs enum w Kotlinie?
#sealed-class#enum#when
Java
Czym są sealed classes w Javie i po co się ich używa?
#java#sealed#inheritance