Sobes.tech
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 επιτρέπει τη σύγκριση αντικειμένων με βάση το περιεχόμενό τους, όχι τη αναφορά.