Sobes.tech
Middle

Kotlin'da data sinflari va sealed sinflar nima uchun ishlatiladi?

sobes.tech AI

AIdan javob

Ma'lumot to'plam sinflari faqat ma'lumotlarni saqlash uchun mo'ljallangan sinflarni yaratishni soddalashtiradi. Kompilyator ular uchun avtomatik ravishda quyidagilarni ishlab chiqaradi:

  • equals()
  • hashCode()
  • toString()
  • copy()
  • componentN() destrukturatsiya uchun
Ma'lumot sinfi User(val nom: String, val yosh: Int)

// Foydalanish
val user = User("Alice", 30)
println(user) // User(nom=Alice, yosh=30) ni chiqaradi
val user2 = user.copy(yosh = 31)
val (nom, yosh) = user // Destrukturatsiya

Yopiq sinflar (sealed) sinflarning cheklangan merosxo'rlik hierarxiyasini ifodalaydi, bu erda barcha mumkin bo'lgan kichik sinflar kompilatsiya vaqtida ma'lum. Bu ularni when ifodalarida else bo'limisiz ishlatishga imkon beradi, bu esa barcha variantlarning to'liq tekshirilishini ta'minlaydi.

Yopiq sinf Result {
    data class Success(val data: String) : Result()
    data class Error(val message: String) : Result()
    object Loading : Result() // Ob'ekt, parametrlar yo'q
}

fun handleResult(result: Result) {
    when (result) {
        is Result.Success -> println("Muvaffaqiyat: ${result.data}")
        is Result.Error -> println("Xato: ${result.message}")
        Result.Loading -> println("Yuklanmoqda...")
    }
}

Taqqoslash:

Xususiyat Ma'lumot sinfi Yopiq sinf
Maqsad Ma'lumotlarni saqlash Cheklangan sinf merosxo'rligi
Imkoniyatlar Avtomatik metodlar ishlab chiqarish when da to'liq tekshirish
Kichik sinflar Maxsus cheklovlar yo'q Bir xil fayl yoki modulda bo'lishi kerak
Foydalanish Ma'lumot modellari, DTOlar Holatlarni, voqealarni, variantlarni ifodalash