Sobes.tech
Junior — Middle

Meg tudná magyarázni, mit jelent az equals metódus a Java objektumok összehasonlításának kontextusában?

sobes.tech MI

Válasz az MI-től

Java-ban az equals metódust két objektum tartalmának összehasonlítására használják az egyenlőség ellenőrzésére. Alapértelmezés szerint, ha nem írjuk felül, az Object osztály equals metódusa referenciákat hasonlít össze, vagyis ellenőrzi, hogy mindkét változó ugyanarra az objektumra mutat-e a memóriában.

Az objektumok érték szerinti összehasonlításához (például az osztály mezői szerint) felül kell írni az equals metódust. Fontos betartani a metódus szerződését: legyen reflexív, szimmetrikus, tranzitív, következetes és ne legyen null-al egyenlő.

Példa az equals felülírására a Person osztályban:

public class Person {
    private String name;
    private int age;

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true; // saját magával való összehasonlítás
        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);
    }
}

Így az equals lehetővé teszi az objektumok tartalom szerinti összehasonlítását, nem pedig a referencia szerint.