Sobes.tech
Middle

Kotlin'da hierarxiyalarni modellashtirish uchun yopilgan sinflardan qanday foydalaniladi?

sobes.tech AI

AIdan javob

Yopiq sinflar (sealed classes) cheklangan meroslik hierarxiyalarini tasvirlash uchun ishlatiladi, bu yerda barcha mumkin bo'lgan vorislar kompilatsiya vaqtida ma'lum.

Asosiy xususiyatlar:

  • Barcha to'g'ridan-to'g'ri vorislar bir xil faylda bo'lishi kerak (Kotlin 1.5 dan oldin). Kotlin 1.5 dan boshlab, ular har qanday faylda bo'lishi mumkin, shart emas.
  • Yopiq sinf vorislari oddiy sinflar, data sinflar, object deklaratsiyalari yoki boshqa yopiq sinflar bo'lishi mumkin.
  • Yopiq sinf konstruktorining standart holatda maxfiy; boshqa modifikatorlar (public, protected, internal) ruxsat etilmaydi.
  • When ifodalarida to'liq (exhaustive) tahlil qilish imkonini beradi, bu barcha mumkin bo'lgan holatlarni ishlashni ta'minlaydi va else bo'lakka ehtiyojni yo'q qiladi.

Foydalanish misoli, foydalanuvchi interfeysining holatini modellash uchun:

sealed class UiState {
    object Loading : UiState() // Yuklash holati
    data class Success(val data: String) : UiState() // Ma'lumotlar muvaffaqiyatli yuklandi
    data class Error(val message: String) : UiState() // Xato
}

When ifodalarida foydalanish:

fun handleUiState(state: UiState): String {
    return when (state) {
        UiState.Loading -> "Ma'lumotlar yuklanmoqda..."
        is UiState.Success -> "Ma'lumotlar muvaffaqiyatli yuklandi: ${state.data}"
        is UiState.Error -> "Xato: ${state.message}"
    }
}

Afzalliklari:

  • Tip xavfsizligi: kompilator barcha mumkin bo'lgan vorislarni ishlashini tekshiradi.
  • O'qilishi oson: qaysi ma'lumot yoki holat variantlari mavjudligini aniq ko'rsatadi.
  • Quvvatli: when ifodalar bilan ishlashni soddalashtiradi.