Junior
Mire használják az equals() és toString() metódusokat Java-ban?
sobes.tech MI
Válasz az MI-től
Az equals() metódust az objektumok logikai ekvivalenciájának összehasonlítására használják, vagyis meghatározza, hogy két objektum ugyanazt az értéket vagy entitást képviseli-e, függetlenül attól, hogy fizikailag ugyanaz az objektum-e a memóriában.
A toString() metódus az objektum sztring reprezentációjának lekérésére szolgál. Alapértelmezés szerint egy olyan sztringet ad vissza, amely tartalmazza az osztály nevét és a hash-kódját, de gyakran felülírják, hogy informatívabb leírást nyújtsanak az objektum állapotáról.
public class ExampleObject {
private int id;
private String name;
public ExampleObject(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true; // Hivatkozások összehasonlítása
if (o == null || getClass() != o.getClass()) return false; // Típus és null ellenőrzés
ExampleObject that = (ExampleObject) o; // Típus konvertálás
return id == that.id && // Jelentős mezők összehasonlítása
name.equals(that.name);
}
@Override
public int hashCode() {
// A hashCode felülírása kötelező, ha az equals() felülírásra kerül
return Objects.hash(id, name);
}
@Override
public String toString() {
return "ExampleObject{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
public static void main(String[] args) {
ExampleObject obj1 = new ExampleObject(1, "Test");
ExampleObject obj2 = new ExampleObject(1, "Test");
ExampleObject obj3 = new ExampleObject(2, "Another");
// equals() használata
System.out.println("obj1 equals obj2: " + obj1.equals(obj2)); // true - logikailag egyenértékű
System.out.println("obj1 equals obj3: " + obj1.equals(obj3)); // false - különböző objektumok
// toString() használata
System.out.println("obj1 toString(): " + obj1.toString()); // A objektum sztring reprezentációja
}
}