Sobes.tech
Junior — Middle

Koje prednosti i scenarije korišćenja poznaješ za sealed class u Kotlinu?

sobes.tech АИ

Одговор од АИ

Zapečaćena klasa u Kotlin-u se koristi za ograničavanje hijerarhije nasleđivanja. Sve podklase zapečaćene klase moraju biti deklarisane u istoj datoteci kao i sama zapečaćena klasa. Ovo omogućava kompajleru da zna sve moguće varijante naslednika, što je zgodno za korišćenje u izrazima when bez potrebe da se piše grana else.

Prednosti:

  • Bezbednost tipova: kompajler proverava potpunost obrade svih varijanti.
  • Pogodno za modelovanje ograničenih skupova stanja ili događaja.

Scenariji korišćenja:

  • Implementacija stanja u obrascu "stanje".
  • Obrada događaja ili komandi.
  • Predstavljanje ograničenog skupa opcija, na primer, odgovora API-ja.

Primer:

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("Podaci: ${result.data}")
        is Result.Error -> println("Greška: ${result.error.message}")
        Result.Loading -> println("Učitavanje...")
    }
}