Junior — Middle
სად უნდა გადააწეროთ equals მეთოდი Java-ში ობიექტების სწორად შედარებისთვის?
sobes.tech AI
პასუხი AI-სგან
Java-ში მეთოდი equals უნდა იყოს გადაწერილი, როდესაც გსურთ განსაზღვროთ თქვენი საკუთარი კრიტერიუმები თქვენი კლასი ობიექტების თანასწორობისთვის, რომლებიც განსხვავდება სტანდარტული მითითების შედარებიდან (რომელიც განხორციელებულია Object-ში).
ეს განსაკუთრებით მნიშვნელოვანია, თუ თქვენი კლასი ობიექტები ლოგიკურად მიიჩნევა თანასწორად, როდესაც გარკვეული ველები ემთხვევა, მაგალითად, Person კლასში, ობიექტები მიიჩნევა თანასწორად, თუ სახელიც და დაბადების თარიღიც ემთხვევა.
equals მეთოდის გადაწერა აუცილებელია, რათა:
- ობიექტები სწორად შედაროთ შიგთავსის მიხედვით.
- უზრუნველყოთ HashSet ან HashMap კოლექციების სწორად მუშაობა, რომლებიც იყენებენ equals-ს ელემენტების უნიკალურობის განსაზღვრად.
equals-ის გადაწერისას, ასევე მნიშვნელოვანია hashCode-ის გადაწერა, რათა შეინარჩუნოს ამ მეთოდებს შორის კონტრაქტი.
მაგალითი equals და hashCode-ის გადაწერის:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return Objects.equals(name, person.name) && Objects.equals(birthDate, person.birthDate);
}
@Override
public int hashCode() {
return Objects.hash(name, birthDate);
}