Sobes.tech
Junior — Middle

Come è implementato il metodo equals in Java e come viene usato per confrontare gli oggetti?

sobes.tech AI

Risposta dell'AI

In Java, il metodo equals() è definito nella classe Object e serve per confrontare gli oggetti per uguaglianza logica. Per impostazione predefinita, confronta i riferimenti (cioè verifica se due variabili puntano allo stesso oggetto).

Per un confronto corretto del contenuto degli oggetti, le classi di solito ridefiniscono il metodo equals(), per confrontare i campi significativi degli oggetti.

Esempio di ridefinizione di equals():

@Override
public boolean equals(Object obj) {
    if (this == obj) return true; // verifica di identità
    if (obj == null || getClass() != obj.getClass()) return false;
    MyClass other = (MyClass) obj;
    return Objects.equals(field1, other.field1) && field2 == other.field2;
}

È importante che, quando si ridefinisce equals(), si ridefinisca anche hashCode(), per garantire il corretto funzionamento degli oggetti nelle collezioni, ad esempio, in HashMap.

Utilizzo:

MyClass a = new MyClass(...);
MyClass b = new MyClass(...);
if (a.equals(b)) {
    // gli oggetti sono considerati uguali per contenuto
}