Sobes.tech
Junior — Middle

Java'da nesne karşılaştırması bağlamında equals metodunun ne anlama geldiğini açıklayabilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Java'da equals metodu, iki nesnenin içeriğini eşitlik açısından karşılaştırmak için kullanılır. Varsayılan olarak, eğer üzerine yazılmamışsa, Object sınıfının equals metodu referansları karşılaştırır, yani her iki değişkenin aynı bellek nesnesine işaret edip etmediğini kontrol eder.

Nesneleri değerlerine göre karşılaştırmak (örneğin, sınıfın alanlarıyla) için equals metodunu geçersiz kılmak gerekir. Bu metodun sözleşmesine uymak önemlidir: o, yansıtıcı, simetrik, transitif, tutarlı olmalı ve null ile karşılaştırıldığında false döndürmelidir.

Person sınıfında equals metodunun nasıl geçersiz kılınacağına dair örnek:

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

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true; // kendisiyle karşılaştırma
        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);
    }
}

Bu şekilde, equals nesneleri referans yerine içeriklerine göre karşılaştırmaya olanak tanır.