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.