Sobes.tech
Junior — Middle

Kas saaksite selgitada, mida tähendab meetod equals Java objektide võrdlemise kontekstis?

sobes.tech AI

Vastus AI-lt

Java keeles kasutatakse equals meetodit kahe objekti sisu võrdlemiseks võrdsete. Vaikimisi, kui seda üle kirjutada ei ole, võrdleb Object klassi equals meetod viiteid, st kontrollib, kas mõlemad muutujad osutavad mälus samale objektile.

Objektide võrdlemiseks väärtuse järgi (näiteks klassi väljade järgi) tuleb equals meetod üle kirjutada. Oluline on järgida meetodi lepingut: see peab olema refleksivne, sümmeetriline, transitiivne, järjepidev ning mitte võrdne null-iga.

Näide Person klassis equals meetodi üle kirjutamisest:

public class Person {
    private String name;
    private int age;

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true; // võrdlus iseendaga
        if (obj == null || getClass() != obj.getClass()) return false;
        Person other = (Person) obj;
        return age == other.age && Objects.equals(name, other.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

Sellisel viisil võimaldab equals võrrelda objekte nende sisu põhjal, mitte viite põhjal.