Sobes.tech
Junior

Cosa fa il metodo equals()?

sobes.tech AI

Risposta dell'AI

Il metodo equals() in Java confronta due oggetti per verificare se sono uguali.

Per impostazione predefinita (nella classe Object), verifica se i riferimenti agli oggetti sono uguali (se puntano allo stesso esempio in memoria).

Le classi possono ridefinire questo metodo per determinare l'uguaglianza logica degli oggetti basata sul loro contenuto (ad esempio, due oggetti String sono considerati uguali se contengono la stessa sequenza di caratteri, anche se sono istanze diverse).

Quando si ridefinisce equals(), è anche necessario ridefinire il metodo hashCode() per rispettare il seguente accordo: se due oggetti sono uguali secondo equals(), allora i loro metodi hashCode() devono restituire valori uguali.

Esempio di ridefinizione:

class MyClass {
    private int value;

    public MyClass(int value) {
        this.value = value;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true; // Confronto di riferimenti
        if (o == null || getClass() != o.getClass()) return false; // Controllo null e confronto tipi
        MyClass myClass = (MyClass) o; // Cast
        return value == myClass.value; // Confronto logico per campo value
    }

    @Override
    public int hashCode() {
        return Objects.hash(value); // Generazione hash
    }
}