Penggunaan Pilihan getClass() vs. instanceof dalam Menjana .equals()
Apabila menggunakan penjana kod Eclipse untuk .equals() dan .hashCode(), anda mungkin menghadapi pilihan untuk menggunakan 'instanceof' untuk perbandingan jenis atau .getClass(). Pilihan lalai ialah .getClass(), tetapi artikel ini mengkaji sama ada terdapat sebarang kelebihan untuk menggunakan .getClass() berbanding instanceof.
Perbandingan Tanpa instanceof:
if (obj == null) return false; if (getClass() != obj.getClass()) return false;
Perbandingan Penggunaan instanceof:
if (obj == null) return false; if (!(obj instanceof MyClass)) return false;
Lazimnya, adalah dinasihatkan untuk menggunakan pilihan instanceof dan alih keluar semakan "if (obj == null)", kerana objek null pasti akan gagal instanceof. Walau bagaimanapun, adakah amalan ini sememangnya salah?
Argumen contohnya
Pakar Java terkenal Josh Bloch menyokong pendekatan ini, memetik alasan berikut:
Sumber Tambahan
Atas ialah kandungan terperinci Kaedah `getClass()` lwn. `instanceof` dalam `.equals()` Java: Mana Yang Lebih Baik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!