Junior — Middle
Μπορείτε να εξηγήσετε τι σημαίνει η μέθοδος equals στο πλαίσιο της σύγκρισης αντικειμένων στη Java;
sobes.tech AI
Απάντηση από AI
Στην Java, η μέθοδος equals χρησιμοποιείται για τη σύγκριση του περιεχομένου δύο αντικειμένων για ισότητα. Από προεπιλογή, αν δεν την υπερκαθορίσετε, η μέθοδος equals της κλάσης Object συγκρίνει τις αναφορές, δηλαδή ελέγχει αν και οι δύο μεταβλητές δείχνουν στο ίδιο αντικείμενο στη μνήμη.
Για να συγκρίνετε αντικείμενα με βάση την τιμή (π.χ., με τα πεδία της κλάσης), πρέπει να υπερκαθορίσετε τη μέθοδο equals. Είναι σημαντικό να ακολουθείτε το συμβόλαιο της μεθόδου: πρέπει να είναι ανακλαστική, συμμετρική, μεταβατική, συνεπής και να μην ισούται με null.
Παράδειγμα υπερκαθορισμού του equals στην κλάση Person:
public class Person {
private String name;
private int age;
@Override
public boolean equals(Object obj) {
if (this == obj) return true; // σύγκριση με τον εαυτό του
if (obj == null || getClass() != obj.getClass()) return false;
Person other = (Person) obj;
return age == other.age && Objects.equals(name, other.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
Έτσι, το equals επιτρέπει τη σύγκριση αντικειμένων με βάση το περιεχόμενό τους, όχι τη αναφορά.