Sobes.tech
Middle

Kotlin-də data sinifləri və sealed siniflər nə üçün istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

Yalnız məlumat saxlamaq üçün nəzərdə tutulmuş sinflərin yaradılmasını sadələşdirən məlumat sinifləri avtomatik olaraq aşağıdakıları yaradır:

  • equals()
  • hashCode()
  • toString()
  • copy()
  • componentN() destrukturasiya üçün
məlumat sinfi User(val ad: String, val yaş: Int)

// İstifadə
val user = User("Alice", 30)
println(user) // User(ad=Alice, yaş=30) göstərir
val user2 = user.copy(yaş = 31)
val (ad, yaş) = user // Destrukturasiya

Qapalı sinflər (sealed) sinflərin məhdudlaşdırılmış irsiyyət hierarxiyasını təmsil edir, burada bütün mümkün alt sinflər kompilyasiya vaxtında məlumdur. Bu, onları when ifadələrində else bloku olmadan istifadə etməyə imkan verir və bütün variantların tam yoxlanmasını təmin edir.

qapalı sinif Result {
    data class Success(val data: String) : Result()
    data class Error(val message: String) : Result()
    obyekt Loading : Result() // Obraz, parametr olmadan
}

fun handleResult(result: Result) {
    when (result) {
        is Result.Success -> println("Uğur: ${result.data}")
        is Result.Error -> println("Xəta: ${result.message}")
        Result.Loading -> println("Yüklənir...")
    }
}

Müqayisə:

Xüsusiyyət Məlumat sinfi Qapalı sinif
Məqsəd Məlumatların saxlanması Məhdudlaşdırılmış sinf irsiyyətləri
İmkanlar Avtomatik metodların yaradılması when daxilində tam yoxlama
Alt sinflər Xüsusi məhdudiyyət yoxdur Eyni faylda və ya modüldə olmalıdır
İstifadə Məlumat modelləri, DTO-lar Vəziyyətlərin, hadisələrin, variantların nümayişi