Sobes.tech
Junior — Middle

Πώς υλοποιείται η μέθοδος equals στη Java και πώς χρησιμοποιείται για τη σύγκριση αντικειμένων;

sobes.tech AI

Απάντηση από AI

Στη Java, η μέθοδος equals() ορίζεται στην κλάση Object και χρησιμοποιείται για τη σύγκριση αντικειμένων ως προς την λογική ισότητα. Από προεπιλογή, συγκρίνει τις αναφορές (δηλαδή, ελέγχει αν δύο μεταβλητές δείχνουν στο ίδιο αντικείμενο).

Για σωστή σύγκριση του περιεχομένου των αντικειμένων, οι κλάσεις συνήθως υπερκαθορίζουν τη μέθοδο equals(), ώστε να συγκρίνουν τα σημαντικά πεδία των αντικειμένων.

Παράδειγμα υπερκαθορισμού του equals():

@Override
public boolean equals(Object obj) {
    if (this == obj) return true; // έλεγχος ταυτότητας
    if (obj == null || getClass() != obj.getClass()) return false;
    MyClass other = (MyClass) obj;
    return Objects.equals(field1, other.field1) && field2 == other.field2;
}

Είναι σημαντικό, όταν υπερκαθορίζετε το equals(), να υπερκαθορίζετε και το hashCode(), ώστε να διασφαλίζεται η σωστή λειτουργία των αντικειμένων στις συλλογές, π.χ., στο HashMap.

Χρήση:

MyClass a = new MyClass(...);
MyClass b = new MyClass(...);
if (a.equals(b)) {
    // τα αντικείμενα θεωρούνται ίσα ως προς το περιεχόμενο
}