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