Sobes.tech
Junior

Kotlin'da data sinflarini qanday amalga oshirish va foydalanish mumkin?

sobes.tech AI

AIdan javob

Ma'lumotlar sinflari ma'lumotlarni saqlash uchun ishlatiladi. Kompilyator ular uchun equals(), hashCode(), toString(), copy() va componentN() funksiyalarini avtomatik ravishda yaratadi.

Joriy qilish: data prefiksi bilan sinfni e'lon qilish.

data class User(val name: String, val age: Int)

Foydalanish:

Namuna yaratish:

val user = User("Alice", 30)

Xususiyatlarga kirish:

val name = user.name // Alice
val age = user.age   // 30

Yaratilgan metodlardan foydalanish:

println(user.toString()) // User(name=Alice, age=30)

boshqaUser = User("Alice", 30)
println(user == anotherUser) // true (equals() avtomatik)

eskiUser = user.copy(age = 31) // User(name=Alice, age=31)

userName, userAge = user // Destructuring
println("Ism: $userName, Yoshi: $userAge") // Ism: Alice, Yoshi: 30

Xususiyatlar:

  • Barcha asosiy konstruktor parametrlar val yoki var bo'lishi kerak.
  • Ma'lumotlar sinflari abstract, open, sealed yoki inner bo'lishi mumkin emas.
  • Sinf tanasidagi xususiyatlar metodlar (equals, hashCode, copy, componentN()) generatsiyasida qatnashmaydi.
data class Person(val name: String) {
    var height: Int = 0 // `equals`, `hashCode`, `copy`, `componentN()` ga qatnashmaydi
}

val p1 = Person("Bob")
p1.height = 180
val p2 = Person("Bob")
p2.height = 190
println(p1 == p2) // true