Rumah Java javaTutorial Bagaimana untuk membandingkan objek dengan betul untuk kesamaan di Jawa: mengatasi dan mengatasi kaedah equals(Object)

Bagaimana untuk membandingkan objek dengan betul untuk kesamaan di Jawa: mengatasi dan mengatasi kaedah equals(Object)

Jan 11, 2024 pm 05:18 PM
menulis semula equals kesamarataan

Bagaimana untuk membandingkan objek dengan betul untuk kesamaan di Jawa: mengatasi dan mengatasi kaedah equals(Object)

Kaedah equals(Object) dalam Java ialah kaedah yang digunakan untuk membandingkan kesamaan dua objek. Dalam kelas Java, kaedah equals diwarisi daripada kelas Object secara lalai, dan ia hanya membandingkan nilai rujukan dua objek. Walau bagaimanapun, kita sering perlu membandingkan objek untuk kesaksamaan dengan cara tersuai, yang memerlukan mengatasi kaedah yang sama dalam subkelas.

Untuk membandingkan objek dengan betul untuk kesamaan, kita mesti mengikut beberapa peraturan. Pertama, kaedah equals mesti memenuhi reflekstiviti, yang bermaksud bahawa objek mesti sama dengan dirinya sendiri. Kedua, kaedah sama mesti memenuhi simetri, iaitu, jika objek A sama dengan objek B, maka objek B dan objek A juga mesti sama. Akhir sekali, kaedah equals mesti memenuhi transitivity, iaitu, jika objek A adalah sama dengan objek B, dan objek B adalah sama dengan objek C, maka objek A dan objek C juga mesti sama.

Untuk mengatasi dan mengatasi kaedah sama, kita perlu mempertimbangkan perkara utama berikut.

Pertama, kita perlu memastikan bahawa tandatangan kaedah sama adalah konsisten dengan kaedah sama dalam kelas Objek. Tandatangan kaedah equals hendaklah: public boolean equals(Object obj). Ini bermakna kita perlu menerima parameter jenis Objek dan mengembalikan nilai Boolean.

Kedua, kita perlu melakukan semakan jenis untuk memastikan bahawa parameter yang dihantar adalah objek yang sepadan dengan jenis objek semasa. Ini boleh dicapai dengan menggunakan kata kunci instanceof. Jika semakan jenis gagal, kami boleh terus mengembalikan palsu.

Kemudian, kita perlu menukar parameter masuk kepada jenis objek semasa dan membandingkan kesamaan pelbagai sifat. Dalam proses ini, kita mesti mengikut konvensyen pelaksanaan kaedah equals Java, iaitu, menggunakan kaedah equals untuk membandingkan sifat objek dan bukannya menggunakan operator "==".

Apabila membandingkan nilai atribut, kita perlu mempertimbangkan kes rujukan nol. Jika nilai harta adalah nol, kita boleh menggunakan kaedah sama dengan kelas Objek untuk perbandingan, yang akan mengendalikan situasi rujukan nol dengan betul. Selain itu, untuk atribut jenis asas, kita boleh terus menggunakan operator "=" untuk perbandingan.

Akhir sekali, kita perlu memastikan bahawa kaedah yang sama mengatasi kaedah hashCode. Menurut spesifikasi Java, jika dua objek adalah sama, kaedah hashCode mereka mesti mengembalikan nilai yang sama. Ini adalah untuk memastikan objek disimpan dan diambil dengan betul apabila menggunakan struktur data seperti jadual cincang.

Berikut ialah contoh yang menunjukkan cara untuk mengatasi kaedah equals:

public class Person {
    private String name;
    private int age;
  
    // 省略构造方法、getter和setter方法
  
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (!(obj instanceof Person)) {
            return false;
        }
        Person other = (Person) obj;
        return Objects.equals(this.name, other.name) && this.age == other.age;
    }
  
    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
  
    // 省略其他方法
}
Salin selepas log masuk

Dalam contoh di atas, kami telah mengatasi kaedah equals untuk membandingkan nama dan sifat umur objek Person untuk kesamaan. Pada masa yang sama, kami juga mengatasi kaedah hashCode untuk memastikan objek yang sama mempunyai kod cincang yang sama.

Untuk meringkaskan, dengan menulis semula dan mengatasi kaedah equals dengan betul, kami boleh memastikan bahawa kami mendapat hasil yang betul apabila membandingkan objek untuk kesamaan. Perlu diingatkan bahawa penulisan semula kaedah equals mesti memenuhi sifat seperti reflekstiviti, simetri, dan transitivity, dan kaedah hashCode juga perlu ditulis semula. Dengan mengikuti peraturan ini, kami boleh memastikan bahawa kami mendapat hasil yang betul apabila menggunakan perbandingan kesamaan objek.

Atas ialah kandungan terperinci Bagaimana untuk membandingkan objek dengan betul untuk kesamaan di Jawa: mengatasi dan mengatasi kaedah equals(Object). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah perbezaan antara pengendali perbandingan kesamaan (==tanda sama dua kali ganda) dan identiti (===tanda sama tiga kali ganda) PHP? Apakah perbezaan antara pengendali perbandingan kesamaan (==tanda sama dua kali ganda) dan identiti (===tanda sama tiga kali ganda) PHP? Sep 07, 2023 pm 05:45 PM

Dalam PHP, double equals (==) dan triple equals (===) ialah operator perbandingan yang digunakan untuk membandingkan nilai untuk kesamaan. Walau bagaimanapun, mereka berbeza dalam tingkah laku dan ketegasan proses perbandingan. Double equals (==) Operator double equals menyemak kesamaan antara dua nilai, tetapi melakukan paksaan jenis jika kedua-dua nilai mempunyai jenis data yang berbeza. Ini bermakna PHP akan cuba menukar nilai kepada jenis generik sebelum melakukan perbandingan. Berikut ialah beberapa perkara penting tentang pengendali kesamaan berganda: Jika dua nilai mempunyai jenis yang sama, ia berkelakuan seperti pengendali kesamaan tiga kali ganda (perbandingan ketat). Jika dua nilai mempunyai jenis yang berbeza, PHP akan cuba menukarnya kepada jenis biasa. Contohnya, jika anda membandingkan integer dan rentetan, PHP akan cuba menukar rentetan tersebut

Bagaimana untuk menulis semula fungsi dalam golang? Bagaimana untuk menulis semula fungsi dalam golang? Apr 27, 2024 am 11:15 AM

Dalam Go, kaedah mengatasi membenarkan kaedah dalam kelas asas ditakrifkan semula dalam kelas terbitan sambil mengekalkan tandatangan kaedah yang sama: gunakan kata kunci ganti. Kaedah ganti mesti mempunyai tandatangan yang sama dengan kaedah asas. Jenis penerima kaedah yang diganti mestilah subjenis daripada jenis asas.

Bagaimana untuk mengatasi kaedah yang sama dengan betul di Jawa Bagaimana untuk mengatasi kaedah yang sama dengan betul di Jawa May 09, 2023 am 11:19 AM

1. Apakah kaedah equals? Mula-mula kita perlu tahu bahawa kelas Objek ialah kelas induk (kelas super/kelas asas) bagi semua kelas dalam Java Maksudnya, dalam Java, semua kelas mewarisi daripada kelas Objek secara lalai dilaksanakan dalam kelas Objek Kita boleh menggunakan semua kaedah secara langsung. Kaedah sama adalah salah satu daripada banyak kaedah yang dilaksanakan oleh kelas Objek. Tangkapan skrin berikut adalah daripada semua kaedah kelas Java11APIObject: 1.1equals method: equals: ialah kaedah dalam kelas Object, yang hanya boleh menentukan jenis rujukan saya boleh tunjukkan kepada anda kemudian bahawa kod sumber jdk menentukan sama ada alamatnya sama secara lalai (kerana pembolehubah jenis rujukan asas Intinya adalah untuk menyimpan

Cara Nginx melaksanakan konfigurasi tulis semula permintaan berdasarkan URL permintaan Cara Nginx melaksanakan konfigurasi tulis semula permintaan berdasarkan URL permintaan Nov 08, 2023 pm 04:15 PM

Nginx ialah pelayan web yang ringan dan berprestasi tinggi Ia bukan sahaja menyokong fungsi lanjutan seperti proksi terbalik dan pengimbangan beban, tetapi juga mempunyai keupayaan menulis semula permintaan yang kuat. Dalam aplikasi web sebenar, dalam banyak kes adalah perlu untuk menulis semula URL permintaan untuk mencapai pengalaman pengguna yang lebih baik dan kesan pengoptimuman enjin carian. Artikel ini akan memperkenalkan cara Nginx melaksanakan konfigurasi penulisan semula permintaan berdasarkan URL permintaan, termasuk contoh kod khusus. Tulis semula sintaks Dalam Nginx, anda boleh menggunakan arahan tulis semula untuk melaksanakan penulisan semula permintaan. bahasa asasnya

Nginx menulis semula amalan konfigurasi URL untuk mengoptimumkan struktur laman web dan SEO Nginx menulis semula amalan konfigurasi URL untuk mengoptimumkan struktur laman web dan SEO Jul 04, 2023 pm 04:30 PM

Amalan praktikal konfigurasi URL penulisan semula Nginx, mengoptimumkan struktur laman web dan SEO Pengenalan: Dalam era Internet moden, laman web statik tradisional tidak lagi dapat memenuhi keperluan pengguna. Untuk memberikan pengalaman pengguna yang lebih baik, banyak tapak web mula menggunakan teknologi web dinamik. Walau bagaimanapun, URL halaman web dinamik selalunya tidak cukup mesra, dan terdapat kesukaran tertentu untuk disertakan oleh enjin carian dan dikongsi oleh pengguna. Artikel ini akan memperkenalkan cara menggunakan fungsi penulisan semula URL Nginx untuk mengoptimumkan struktur laman web dan SEO. 1. Fungsi penulisan semula URL Nginx Nginx

Apakah perbezaan antara menggunakan == dan sama dalam Java Apakah perbezaan antara menggunakan == dan sama dalam Java May 15, 2023 am 09:25 AM

1. == parsing == sering digunakan untuk perbandingan antara jenis data asas yang sama, dan juga boleh digunakan untuk perbandingan antara objek jenis yang sama jika == membandingkan jenis data asas, maka ia membandingkan dua jenis data asas; nilai adalah sama; jika == ialah dua objek dibandingkan, maka perbandingan adalah rujukan kedua-dua objek, maka ia adalah untuk membandingkan sama ada rujukan kedua-dua objek adalah sama, iaitu, untuk menentukan sama ada dua objek menghala ke kawasan memori yang sama 2. Analisis kaedah sama Kaedah sama digunakan terutamanya antara dua objek untuk mengesan sama ada satu objek sama dengan objek lain. Mari kita lihat kod sumber kaedah equals dalam kelas Objek publicbooleanequals(Objectobj){

Apakah perbezaan antara nosql dan mysql Apakah perbezaan antara nosql dan mysql Jan 28, 2023 pm 04:51 PM

Perbezaan: 1. MySQL ialah pangkalan data hubungan, manakala NoSQL bukan hubungan. 2. Sekatan mod ketat MySQL tidak mudah untuk dikembangkan, manakala NoSQL mudah dikembangkan. 3. MySQL memerlukan model pangkalan data terperinci sebelum mencipta pangkalan data, tetapi NoSQL tidak. 4. MySQL menyediakan sejumlah besar alat pelaporan, tetapi nosql tidak. 5. Berbanding dengan MySQL, NoSQL menyediakan reka bentuk yang lebih fleksibel. 6. Bahasa standard yang digunakan dalam MySQL ialah SQL, manakala NoSQL tidak mempunyai bahasa pertanyaan standard.

Bagaimana untuk membandingkan objek dengan betul untuk kesamaan di Jawa: mengatasi dan mengatasi kaedah equals(Object) Bagaimana untuk membandingkan objek dengan betul untuk kesamaan di Jawa: mengatasi dan mengatasi kaedah equals(Object) Jan 11, 2024 pm 05:18 PM

Kaedah equals(Object) dalam Java ialah kaedah yang digunakan untuk membandingkan dua objek untuk kesamaan. Dalam kelas Java, kaedah equals diwarisi daripada kelas Object secara lalai, dan ia hanya membandingkan nilai rujukan dua objek. Walau bagaimanapun, kita sering perlu membandingkan objek untuk kesaksamaan dengan cara tersuai, yang memerlukan mengatasi kaedah yang sama dalam subkelas. Untuk membandingkan objek dengan betul untuk kesamaan, kita mesti mengikut beberapa peraturan. Pertama sekali, kaedah equals mesti memenuhi reflekstiviti, iaitu

See all articles