Rumah >Java >javaTutorial >Bagaimana untuk Mengatasi Kaedah equals() dengan betul di Jawa?

Bagaimana untuk Mengatasi Kaedah equals() dengan betul di Jawa?

DDD
DDDasal
2024-12-20 19:00:18898semak imbas

How to Properly Override the equals() Method in Java?

Cara Mengatasi Kaedah equals() dalam Java

Mengatasi kaedah equals() adalah penting untuk menyesuaikan tingkah laku perbandingan kesamaan untuk tersuai objek di Jawa. Berikut ialah panduan komprehensif untuk membantu anda melakukannya dengan berkesan:

Masalahnya:

Dalam coretan yang diberikan, anda mengalami ralat semasa cuba membandingkan medan umur menggunakan equals( ), kerana ia direka untuk objek String. Nilai integer memerlukan penggunaan operator ==.

Penyelesaian:

Untuk menyelesaikan ralat ini, gunakan operator == untuk membandingkan jenis data primitif seperti umur. Coretan kod yang diubah suai adalah seperti berikut:

public boolean equals(People other){
    boolean result;
    if((other == null) || (getClass() != other.getClass())){
        result = false;
    } // end if
    else{
        People otherPeople = (People)other;
        result = name.equals(other.name) && age == other.age;
    } // end else

    return result;
} // end equals

Penjelasan Tambahan:

1. Proses Mengatasi:

  • Untuk mengatasi equals(), isytiharkannya dengan anotasi @Override.
  • Kaedah ini harus mengembalikan boolean yang menunjukkan kesamaan, mengambil satu hujah yang sama taip sebagai kelas.

2. Semakan Null:

  • Sentiasa semak nol menggunakan obj == null untuk mengelakkan NullPointerExceptions.

3. Perbandingan Kelas:

  • Sahkan bahawa objek yang hendak dibandingkan adalah daripada kelas yang sama menggunakan getClass() != other.getClass().

4. Logik Perbandingan Tersuai:

  • Tentukan logik perbandingan tersuai dalam blok lain.
  • Gunakan equals() untuk perbandingan Rentetan dan == untuk jenis primitif.
  • Pertimbangkan semua bidang berkaitan yang menentukan kesaksamaan.

Contoh:

Contoh yang disediakan mengatasi equals() untuk kelas Person, membandingkan kedua-dua nama dan umur untuk kesamaan:

public boolean equals(Object obj) {
    if (obj == null) {
        return false;
    }

    if (obj.getClass() != this.getClass()) {
        return false;
    }

    final Person other = (Person) obj;
    if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
        return false;
    }

    if (this.age != other.age) {
        return false;
    }

    return true;
}

Kesimpulan:

Mengatasi kaedah equals() memberi anda kuasa untuk menentukan perbandingan kesamaan tersuai untuk objek tersuai anda. Dengan mengikuti langkah dan contoh yang diberikan dengan teliti, anda boleh membandingkan objek dengan berkesan berdasarkan atribut khusus mereka.

Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Kaedah equals() dengan betul di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn