Sobes.tech
Middle

Kotlin-də hierarxiyaları modelləşdirmək üçün möhürlənmiş siniflərdən necə istifadə etmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Bağlanmış sinflər (sealed classes), bütün mümkün alt siniflərin tərtib zamanı məlum olduğu məhdud irsiyyət hiyerarşilərini təmsil etmək üçün istifadə olunur.

Əsas xüsusiyyətlər:

  • Bütün birbaşa alt siniflər eyni faylda yerləşməlidir (Kotlin 1.5-dən əvvəl). Kotlin 1.5-dən sonra, onlar eyni tərtibdə istənilən faylda ola bilər.
  • Bağlanmış sinfin alt sinifləri adi sinflər, data sinflər, object bəyanatları və ya digər bağlanmış sinflər ola bilər.
  • Bağlanmış sinfin konstruktoru default olaraq özəldir; digər modifikatorlar (public, protected, internal) icazə verilmir.
  • When ifadələrində tam (exhaustive) analiz istifadə etməyə imkan verir, bu da bütün mümkün variantların işlənməsini təmin edir və else-şərtinə ehtiyacı aradan qaldırır.

İstifadə nümunəsi, istifadəçi interfeysinin vəziyyətini modelləşdirmək üçün:

sealed class UiState {
    object Loading : UiState() // Yükləmə vəziyyəti
    data class Success(val data: String) : UiState() // Uğurlu məlumat alınması
    data class Error(val message: String) : UiState() // Xəta
}

When ifadəsində istifadə:

fun handleUiState(state: UiState): String {
    return when (state) {
        UiState.Loading -> "Məlumatlar yüklənir..."
        is UiState.Success -> "Məlumatlar uğurla yükləndi: ${state.data}"
        is UiState.Error -> "Xəta: ${state.message}"
    }
}

Üstünlüklər:

  • Tip təhlükəsizliyi: tərtibçi bütün mümkün alt siniflərin işlənməsini yoxlayır.
  • Oxunaqlıq: hansı məlumat və ya vəziyyət variantlarının mövcud ola biləcəyini açıq göstərir.
  • Rahatlıq: when ifadələri ilə işləməni sadələşdirir.