Junior — Middle
Оё дар усули hashCode майдоне, ки дар дохили data class эълон шудааст, истифода мешавад?
sobes.tech AI
Ҷавоб аз AI
ב-Kotlin, הקומפילר מייצר אוטומטית את שיטות hashCode(), equals(), toString(), וכן copy() ורכיבים לפירוק. שיטת hashCode() מבוססת על כל התכונות המוצהרות ב-קונסטרוקטור הראשי של data class (כלומר, על אלה שמצוינות לאחר שם המחלקה).
אם בתוך data class מוגדר שדה נוסף מחוץ לקונסטרוקטור הראשי, הוא לא משתתף בחישוב של hashCode() ו-equals(). זאת מכיוון ששיטות אלה מתייחסות רק לתכונות שמוצהרות בקונסטרוקטור, כדי להבטיח השוואה נכונה והאשטה של אובייקטים על בסיס הנתונים העיקריים.
דוגמה:
data class User(val id: Int, val name: String) {
var age: Int = 0 // לא משתתף ב-hashCode ו-equals
}
fun main() {
val user1 = User(1, "Alice")
val user2 = User(1, "Alice")
user1.age = 25
user2.age = 30
println(user1 == user2) // true, כי הגיל לא נחשב
println(user1.hashCode() == user2.hashCode()) // true
}