Sobes.tech
Junior — Middle

Можете ли објаснити шта значи метода equals у контексту поређења објеката у Јави?

sobes.tech АИ

Одговор од АИ

U Javi, metoda equals se koristi za poređenje sadržaja dva objekta radi utvrđivanja jednakosti. Podrazumevano, ako se ne prepiše, metoda equals iz klase Object poredi reference, tj. proverava da li obe promenljive ukazuju na isti objekat u memoriji.

Da biste poređivali objekte po vrednosti (na primer, po poljima klase), potrebno je prepisati metodu equals. Važno je pridržavati se ugovora metode: ona treba da bude refleksivna, simetrična, tranzitivna, konzistentna i da ne bude jednaka null.

Primer prepisivanja equals u klasi Person:

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

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true; // poređenje sa samim sobom
        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);
    }
}

Na ovaj način, equals omogućava poređenje objekata po sadržaju, a ne po referenci.