Sobes.tech
Junior

Na čo sa v Jave používajú metódy equals() a toString()?

sobes.tech AI

Odpoveď od AI

Metóda equals() sa používa na porovnanie objektov z hľadiska logickej ekvivalencie, teda určuje, či dva objekty predstavujú rovnakú hodnotu alebo entitu, bez ohľadu na to, či sú fyzicky rovnakým objektom v pamäti.

Metóda toString() sa používa na získanie reťazcovej reprezentácie objektu. Predvolene vracia reťazec obsahujúci názov triedy a jej hash kód, ale často je prepísaná, aby poskytla informatívnejší popis stavu objektu.

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; // Porovnanie odkazov
        if (o == null || getClass() != o.getClass()) return false; // Kontrola typu a null
        ExampleObject that = (ExampleObject) o; // Typové pretypovanie
        return id == that.id && // Porovnanie podľa významných polí
               name.equals(that.name);
    }

    @Override
    public int hashCode() {
        // Prepísanie hashCode je povinné pri prepísaní equals
        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");

        // Použitie equals()
        System.out.println("obj1 equals obj2: " + obj1.equals(obj2)); // true - logicky ekvivalentné
        System.out.println("obj1 equals obj3: " + obj1.equals(obj3)); // false - rôzne objekty

        // Použitie toString()
        System.out.println("obj1 toString(): " + obj1.toString()); // Zobrazí reťazcovú reprezentáciu objektu
    }
}