Sobes.tech
Junior

Ko dara metode equals()?

sobes.tech AI

Atbilde no AI

Metode equals() Java salīdzina divus objektus, lai noteiktu to vienādību.

Pēc noklusējuma (klasē Object) tas pārbauda, vai atsauces uz objektiem ir vienādas (vai tās norāda uz to pašu eksemplāru atmiņā).

Klases var pārdefinēt šo metodi, lai noteiktu loģisko vienādību, pamatojoties uz to saturu (piemēram, divi String objekti tiek uzskatīti par vienādiem, ja tie satur to pašu rakstzīmju secību, pat ja tie ir dažādi eksemplāri).

Pārdefinējot equals(), ir arī nepieciešams pārdefinēt hashCode() metodi, lai ievērotu šo vienošanos: ja divi objekti ir vienādi pēc equals(), tad to hashCode() metodes jāatgriež vienādas vērtības.

Piemērs pārdefinēšanai:

class MyClass {
    private int value;

    public MyClass(int value) {
        this.value = value;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true; // Atsauču salīdzināšana
        if (o == null || getClass() != o.getClass()) return false; // Null un tipu pārbaude
        MyClass myClass = (MyClass) o; // Tipa pārveidošana
        return value == myClass.value; // Loģiska salīdzināšana pēc lauka value
    }

    @Override
    public int hashCode() {
        return Objects.hash(value); // Hash koda ģenerēšana
    }
}