Sobes.tech
Middle

Kā izmantot aizvērtās klases hierarhiju modelēšanai Kotlin?

sobes.tech AI

Atbilde no AI

Noslēgtas klases (sealed classes) tiek izmantotas ierobežotu mantošanas hierarhiju attēlošanai, kur visas iespējamās apakškategorijas ir zināmas kompilācijas laikā.

Galvenās īpašības:

  • Visas tiešās apakškategorijas jāatrodas tajā pašā failā, kur noslēgtā klase (līdz Kotlin 1.5). Sākot ar Kotlin 1.5, tās var būt jebkurā tajā pašā kompilācijas failā.
  • Noslēgtās klases apakškategorijas var būt parastas klases, data-klases, object deklarācijas vai citas noslēgtas klases.
  • Noslēgtās klases konstruktors pēc noklusējuma ir privāts; citi modifikatori (public, protected, internal) nav atļauti.
  • Tās ļauj izmantot pilnīgu (exhaustive) analīzi when izteicienos, kas garantē visu iespējamās variācijas apstrādi un novērš nepieciešamību pēc else zīmes.

Piemērs, kā izmantot, lai modelētu lietotāja saskarnes stāvokli:

sealed class UiState {
    object Loading : UiState() // Ielādes stāvoklis
    data class Success(val data: String) : UiState() // Veiksmīga datu saņemšana
    data class Error(val message: String) : UiState() // Kļūda
}

Izmantošana when izteicienā:

fun handleUiState(state: UiState): String {
    return when (state) {
        UiState.Loading -> "Datu ielāde..."
        is UiState.Success -> "Dati veiksmīgi ielādēti: ${state.data}"
        is UiState.Error -> "Kļūda: ${state.message}"
    }
}

Priekšrocības:

  • Tipa drošība: kompilators pārbauda, vai ir apstrādātas visas iespējamās apakškategorijas.
  • Lasāmība: skaidri rāda, kādi dati vai stāvokļi var būt.
  • Ērtība: vienkāršo darbu ar when izteicieniem.