Sobes.tech
Junior — Middle

Java-да объектілерді салыстыру контекстінде equals әдісі не білдіретінін түсіндіре аласыз ба?

sobes.tech AI

AI-дан жауап

Java-да equals әдісі екі объектінің мазмұнын теңестіру үшін қолданылады. Әдепкі бойынша, егер қайта анықталмаса, Object класының equals әдісі сілтемелерді салыстырады, яғни екі айнымалы бірдей жадтағы бір объектіні көрсететінін тексереді.

Объектілерді мәні бойынша салыстыру үшін (мысалы, кластың өрістері бойынша) equals әдісін қайта анықтау керек. Бұл кезде әдістің шарттарын сақтау маңызды: ол рефлексивті, симметриялық, транзитивті, консистентті және null-ге тең емес болуы керек.

Мысал ретінде Person класы үшін equals әдісін қайта анықтау:

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

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true; // өзімен салыстыру
        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);
    }
}

Осылайша, equals объектілерді мәні бойынша салыстыруға мүмкіндік береді, сілтеме бойынша емес.