Sobes.tech
Junior

La ce sunt folosite metodele equals() și toString() în Java?

sobes.tech AI

Răspuns de la AI

Metoda equals() este utilizată pentru compararea obiectelor în ceea ce privește echivalența logică, adică determină dacă două obiecte reprezintă aceeași valoare sau entitate, indiferent dacă sunt același obiect fizic în memorie.

Metoda toString() este utilizată pentru obținerea unei reprezentări în șir de caractere a obiectului. În mod implicit, ea returnează un șir care conține numele clasei și codul său hash, dar adesea este suprascrisă pentru a oferi o descriere mai informativă a stării obiectului.

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; // Compararea referințelor
        if (o == null || getClass() != o.getClass()) return false; // Verificarea tipului și null
        ExampleObject that = (ExampleObject) o; // Casting de tip
        return id == that.id && // Compararea câmpurilor semnificative
               name.equals(that.name);
    }

    @Override
    public int hashCode() {
        // Suprascrierea hashCode este obligatorie atunci când se suprascrie 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");

        // Utilizarea lui equals()
        System.out.println("obj1 equals obj2: " + obj1.equals(obj2)); // true - echivalent logic
        System.out.println("obj1 equals obj3: " + obj1.equals(obj3)); // false - obiecte diferite

        // Utilizarea lui toString()
        System.out.println("obj1 toString(): " + obj1.toString()); // Va afișa reprezentarea în șir a obiectului
    }
}