Sobes.tech
Junior

Milleks kasutatakse Java keeles meetodeid equals() ja toString()?

sobes.tech AI

Vastus AI-lt

equals() meetodit kasutatakse objektide võrdlemiseks loogilise ekvivalentsuse jaoks, see tähendab, et määrata, kas kaks objekti esindavad sama väärtust või olemust, sõltumata sellest, kas nad on füüsiliselt sama objekt mälus.

toString() meetodit kasutatakse objekti stringi kujutise saamiseks. Tavaliselt tagastab see klassi nime ja selle hash-koodi, kuid sageli ülekirjutatakse, et pakkuda informatiivsemat objekti oleku kirjelduse.

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; // viidete võrdlus
        if (o == null || getClass() != o.getClass()) return false; // tüüpide ja null kontroll
        ExampleObject that = (ExampleObject) o; // tüüpide ümberkonverteerimine
        return id == that.id && // oluliste väljade võrdlus
               name.equals(that.name);
    }

    @Override
    public int hashCode() {
        // hashCode ülekirjutamine on kohustuslik koos 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()` kasutamine
        System.out.println("obj1 equals obj2: " + obj1.equals(obj2)); // tõene - loogiliselt ekvivalent
        System.out.println("obj1 equals obj3: " + obj1.equals(obj3)); // väär - erinevad objektid

        // `toString()` kasutamine
        System.out.println("obj1 toString(): " + obj1.toString()); // objekti stringi esitus
    }
}