Sobes.tech
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
    }
}