Sobes.tech
Junior — Middle

Kako je metoda equals implementirana u Javi i kako se koristi za poređenje objekata?

sobes.tech АИ

Одговор од АИ

U Javi, metoda equals() je definisana u klasi Object i služi za poređenje objekata po logičkoj jednakosti. Po default-u, ona poredi reference (tj. proverava da li dve promenljive ukazuju na isti objekat).

Za ispravno poređenje sadržaja objekata, klase obično redefinišu metodu equals(), kako bi poređivale značajna polja objekata.

Primer redefinisanja equals():

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

Važno je, kada redefinišete equals(), da redefinišete i hashCode(), kako bi objekti pravilno funkcionisali u kolekcijama, na primer u HashMap.

Upotreba:

MyClass a = new MyClass(...);
MyClass b = new MyClass(...);
if (a.equals(b)) {
    // objekti se smatraju jednakim po sadržaju
}