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()vecomponentN()fonksiyonlarının otomatik oluşturulması.- En az bir parametre gerektirirler.
- Tüm yapıcı parametreleri
valveyavarolarak 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
}