Middle
როგორ გამოვიყენოთ დახურული კლასები ჰიეარაქიების მოდელირებისთვის Kotlin-ში?
sobes.tech AI
პასუხი AI-სგან
Закрытые классы (sealed classes) колдонулат чектелген мурас хиерархияларын көрсөтүү үчүн, анда бардык мүмкүн болгон подкласстар компиляция учурунда белгилүү болот.
Негизги өзгөчөлүктөрү:
- Бардык түздөн-түз подкласстар ошол эле файлда болушу керек (Kotlin 1.5 чейин). Kotlin 1.5тен кийин, алар кез келген файлда болушу мүмкүн ошол эле компиляцияда.
- Закрытые класстардын подкласстары жөнөкөй класстар, data-класстар, object декларациялары же башка жабык класстар болушу мүмкүн.
- Закрытые класстардын конструктору алдын ала жеке; башка модификаторлор (public, protected, internal) уруксат берилбейт.
- When билдирүүлөрүндө толук (
exhaustive) анализ жүргүзүүгө мүмкүндүк берет, бул бардык мүмкүн болгон варианттарды иштетүүнү камсыздайт жана else-тармактын кереги жок кылат.
Колдонуучу интерфейсинин абалын моделдөө үчүн мисал:
sealed class UiState {
object Loading : UiState() // Жүктөө абалы
data class Success(val data: String) : UiState() // Ийгиликтүү маалымат алуу
data class Error(val message: String) : UiState() // Ката
}
When билдирүүсүндө колдонуу:
fun handleUiState(state: UiState): String {
return when (state) {
UiState.Loading -> "Маалыматтар жүктөлүүдө..."
is UiState.Success -> "Маалыматтар ийгиликтүү жүктөлдү: ${state.data}"
is UiState.Error -> "Ката: ${state.message}"
}
}
Артыкчылыктары:
- Типтин коопсуздугу: компилятор бардык мүмкүн болгон подкласстар иштетилгенин текшерет.
- Ачык-айкындуулук: кайсы маалымат же абал түрлөрү болушу мүмкүн экенин так көрсөтөт.
- Ыңгайлуулук:
whenбилдирүүлөрү менен иштөөнү жеңилдетет.