Sobes.tech
Junior

Kotlin-də digər siniflərlə müqayisədə Data Class-ın xüsusiyyəti nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Kotlin-də Data Class xüsusiyyətləri:

  • equals(), hashCode(), toString(), copy()componentN() funksiyalarının avtomatik yaradılması.
  • Minimal bir parametr konstruktorunda tələb olunur.
  • Bütün konstruktor parametrləri val və ya var kimi elan edilməlidir.
  • Əsasən məlumatların saxlanması üçün nəzərdə tutulmuşdur.

Nümunə:

// Adi sinif
class User(val name: String, val age: Int)

// Data Class
data class DataUser(val name: String, val age: Int)

fun main() {
    val user1 = User("Alice", 30)
    val user2 = User("Alice", 30)
    println(user1 == user2) // false (varsayılan olaraq referansları müqayisə edir)
    println(user1.toString()) // User@hashcode kimi göstərəcək

    val dataUser1 = DataUser("Alice", 30)
    val dataUser2 = DataUser("Alice", 30)
    println(dataUser1 == dataUser2) // true (məlumatları müqayisə edir)
    println(dataUser1.toString()) // DataUser(name=Alice, age=30) göstərəcək
}

Yaradılan funksiyalarda fərqlər:

Funksiya Adi sinif Data Class
equals() Referansların müqayisəsi Məlumatların sahələr üzrə müqayisəsi
hashCode() İcraata bağlıdır Sahələrə görə məlumatların asılılığı
toString() Sinif adı və hash kodu Sinif adı və sahə dəyərləri
copy() Xeyr (əllə tətbiq tələb edir) Bəli (asandlıqla nüsxələr yarada bilər)
componentN() Xeyr Bəli (obyekti destruktur etməyə imkan verir)

componentN() istifadə:

// Data Class tərifi
data class Point(val x: Int, val y: Int)

fun main() {
    val p = Point(10, 20)
    val (x, y) = p // component1(), component2() ilə destrukturasiya
    println("x: $x, y: $y") // x: 10, y: 20 göstərəcək
}