Sobes.tech
Junior — Middle

Կարող եք բացատրել, թե ինչ է նշանակում equals մեթոդը Java-ում օբյեկտների համեմատության համատեքստում?

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 թույլ է տալիս համեմատել օբյեկտները ըստ բովանդակության, ոչ թե ըստ հղման։