Sobes.tech
Junior

Kotlin'deki diğer sınıflara kıyasla Data Class'ın özelliği nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Kotlin'de Data Class özellikleri:

  • equals(), hashCode(), toString()(), copy() ve componentN() fonksiyonlarının otomatik oluşturulması.
  • En az bir parametre gerektirirler.
  • Tüm yapıcı parametreleri val veya var olarak bildirilmelidir.
  • Öncelikle veri saklama amacıyla tasarlanmıştır.

Örnek:

// Normal sınıf
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 olarak referansları karşılaştırır)
    println(user1.toString()) // User@hashcode gibi bir şey gösterecek

    val dataUser1 = DataUser("Alice", 30)
    val dataUser2 = DataUser("Alice", 30)
    println(dataUser1 == dataUser2) // true (verileri karşılaştırır)
    println(dataUser1.toString()) // DataUser(name=Alice, age=30) gösterecek
}

Oluşan fonksiyonlardaki farklar:

Fonksiyon Normal sınıf Data Class
equals() Referans karşılaştırması Alanlara göre veri karşılaştırması
hashCode() Uygulamaya bağlıdır Alanlara göre veri bağımlı
toString() Sınıf adı ve hash kodu Sınıf adı ve alan değerleri
copy() Hayır (manuel uygulama gerekebilir) Evet (kolayca kopya oluşturabilir)
componentN() Hayır Evet (nesneyi destrüktür etmeye izin verir)

componentN() kullanımı:

// Bir Data Class tanımı
data class Point(val x: Int, val y: Int)

fun main() {
    val p = Point(10, 20)
    val (x, y) = p // component1(), component2() kullanarak destrüktür
    println("x: $x, y: $y") // x: 10, y: 20 gösterecek
}