Junior
equals() metodi nima qiladi?
sobes.tech AI
AIdan javob
Java'da equals() metodi ikki ob'ektni tengligini solishtiradi.
Standart holda (Object sinfida), u ob'ektlarga referenslar bir xil yoki yo'qligini tekshiradi (ular bir xil xotira nusxasiga ishora qiladimi).
Sinflar bu metodni qayta yozishlari mumkin, ob'ektlarning mazmuniga asoslangan mantiqiy tengligini aniqlash uchun (masalan, ikki String ob'ekti, agar ular bir xil belgi ketma-ketligini o'z ichiga olsa, teng deb hisoblanadi, hatto ular turli nusxalar bo'lsa ham).
equals() metodini qayta yozishda, hashCode() metodini ham qayta yozish kerak, shunda quyidagi kelishuv saqlanadi: agar ikki ob'ekt equals() bo'yicha teng bo'lsa, ularning hashCode() metodlari ham bir xil qiymatlarni qaytarishi kerak.
Qayta yozish misoli:
class MyClass {
private int value;
public MyClass(int value) {
this.value = value;
}
@Override
public boolean equals(Object o) {
if (this == o) return true; // Referenslarni solishtirish
if (o == null || getClass() != o.getClass()) return false; // null va turlarni tekshirish
MyClass myClass = (MyClass) o; // Tipni o'zgartirish
return value == myClass.value; // Mantiqiy solishtirish
}
@Override
public int hashCode() {
return Objects.hash(value); // Hash kodini yaratish
}
}