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 |