Middle
Ինչպես օգտագործել փակ դասերը հիերարխիաներ մոդելավորելու համար Kotlin-ում։
sobes.tech AI
Պատասխան AI-ից
Ավտոմատ փակված դասեր (sealed classes) օգտագործվում են սահմանափակ ժառանգության հիերարխիաները ներկայացնելու համար, որտեղ բոլոր հնարավոր ենթակլասները հայտնի են կոմպիլյացիայի ժամանակ:
Հիմնական հատկանիշները՝
- Բոլոր ուղղակի ենթակլասները պետք է գտնվեն նույն ֆայլում, ինչ փակված դասը (Kotlin 1.5-ից առաջ): Kotlin 1.5-ից սկսած, դրանք կարող են լինել ցանկացած ֆայլում նույն կոմպիլյացիայի շրջանակում:
- Փակված դասի ենթակլասները կարող են լինել սովորական դասեր, data դասեր, object հայտարարություններ կամ այլ փակված դասեր:
- Փակված դասի կոնստրուկտորը ըստ նախնական կարգի մասնավոր է; այլ մոդիֆիկատորներ (public, protected, internal) թույլատրված չեն:
- Դրանք թույլ են տալիս օգտագործել լրիվ (
exhaustive) վերլուծություն when արտահայտություններում, ինչը երաշխավորում է բոլոր հնարավոր տարբերակների մշակումը և վերացնում է else-կողմն անհրաժեշտությունը:
Օրինակ՝ օգտագործում է օգտագործողի ինտերֆեյսի վիճակը մոդելավորելու համար:
sealed class UiState {
object Loading : UiState() // Բեռնման վիճակ
data class Success(val data: String) : UiState() // Հաջող տվյալների բեռնում
data class Error(val message: String) : UiState() // Գործողություն
}
Օգտագործում in when արտահայտությունում:
fun handleUiState(state: UiState): String {
return when (state) {
UiState.Loading -> "Տվյալները բեռնվում են..."
is UiState.Success -> "Տվյալները հաջողությամբ բեռնվել են: ${state.data}"
is UiState.Error -> "Սխալ: ${state.message}"
}
}
Առավելություններ՝
- Տիպի անվտանգություն՝ կոմպիլյատորը ստուգում է, որ բոլոր հնարավոր ենթակլասները մշակված են:
- Ակնհայտություն՝ ցույց է տալիս, թե տվյալների կամ վիճակի որ տարբերակներն են հնարավոր:
- Հարմարավետություն՝ պարզեցնում է
whenարտահայտությունների աշխատանքը։