Rumah >Java >javaTutorial >Sekiranya Anda Menggunakan `instanceof` atau `getClass()` dalam Kaedah `.equals()` Java?
Mengutamakan instanceof daripada getClass() dalam .equals() Implementations
Apabila menjana kaedah .equals() dalam Eclipse, pembangun dibentangkan dengan pilihan antara menggunakan "getClass()" atau "instanceof" untuk membandingkan jenis objek. Walaupun Eclipse lalai menggunakan "getClass()", secara amnya adalah lebih baik untuk memilih "instanceof" sebaliknya.
Sebab untuk Mengutamakan instanceof
Amalan Terbaik untuk Pemeriksaan Null
Mengenai semakan nol, sememangnya amalan yang baik untuk mengalih keluar pernyataan "if (obj == null)" apabila menggunakan "instanceof". Ini kerana "instanceof" menjamin bahawa "obj" ialah tika kelas yang berkaitan dan objek nol tidak boleh menjadi contoh mana-mana kelas.
Argumen Sokongan
Josh Bloch, pengarang "Effective Java," menyokong penggunaan "instanceof" dalam pelaksanaan .equals(). Beliau berhujah bahawa ia memastikan pematuhan yang betul kepada Prinsip Penggantian Liskov dan menghalang tingkah laku yang mengejutkan dalam koleksi yang bergantung pada kaedah sama.
Sokongan tambahan untuk pendekatan ini boleh didapati dalam jawapan pada Stack Overflow dan dalam yang ketiga bab buku Bloch, "Jawa Berkesan."
Atas ialah kandungan terperinci Sekiranya Anda Menggunakan `instanceof` atau `getClass()` dalam Kaedah `.equals()` Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!