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īziwhenizteicienos, kas garantē visu iespējamās variācijas apstrādi un novērš nepieciešamību pēcelsezī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
whenizteicieniem.