Sobes.tech
Junior

Kam naudojami metodai equals() ir toString() Java kalboje?

sobes.tech AI

Atsakymas iš AI

equals() metodas naudojamas objektų palyginimui loginiai ekvivalentumui, tai yra nustatyti, ar du objektai atstovauja tą patį reikšmę ar esmę, nepriklausomai nuo to, ar jie fiziškai yra tas pats objektas atmintyje.

toString() metodas naudojamas gauti objekto eilutės reprezentaciją. Paprastai jis grąžina klasės pavadinimą ir jos hash kodą, tačiau dažnai jis perrašomas, kad pateiktų išsamesnį objekto būsenos aprašymą.

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; // nuorodų palyginimas
        if (o == null || getClass() != o.getClass()) return false; // tipų ir null patikrinimas
        ExampleObject that = (ExampleObject) o; // tipų konvertavimas
        return id == that.id && // reikšmių palyginimas
               name.equals(that.name);
    }

    @Override
    public int hashCode() {
        // hashCode perrašymas būtinas kartu su 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");

        // `equals()` naudojimas
        System.out.println("obj1 equals obj2: " + obj1.equals(obj2)); // tiesa - loginiai ekvivalentai
        System.out.println("obj1 equals obj3: " + obj1.equals(obj3)); // klaidinga - skirtingi objektai

        // `toString()` naudojimas
        System.out.println("obj1 toString(): " + obj1.toString()); // objekto eilutės reprezentacija
    }
}