Bisakah seseorang mengatakan di mana hal seperti itu berguna?
anjanb
2
Ini hanya memungkinkan Anda untuk melewati pemeriksaan nol dalam metode equals () Anda.
Michael Myers
1
Jika Anda mengimplementasikan Collection, metode .contains () Anda, ketika diberi "o" perlu diuji "jika koleksi ini berisi setidaknya satu elemen e sehingga (o == null? E == null: o.equals (e )). " Demikian pula, metode .remove () Anda harus menghapus elemen seperti itu.
newacct
6
Hanya dua sen saya. Saya akan menggunakan: public static boolean bothNullOrEqual (Objek x, Objek y) {return (x == y || (x! = Null && x.equals (y))); } IMHO, Ini lebih mudah dibaca oleh programmer pemula.
m_vitaly
1
Kasus penggunaan lain: bandingkan nilai untuk melihat apakah nilai telah berubah dari nilai sebelumnya selama pemeriksaan kotor.
Neromancer
Jawaban:
193
Dengan Java 7 Anda sekarang dapat langsung melakukan aman nol sama dengan:
Metode ini juga diterapkan di Googles Dependency injection-libray Guice.
Niels
1
Spring juga mengimplementasikan metode serupa: nullSafeEquals pada kelas
ObjectUtils
2
Google Guava juga memiliki Objects.equals ().
Spina
Ini hanya nullsafe concering x. Untuk y itu tergantung pada implementasi sama dari objek yang diberikan. (implementasinya adalah return (x == y) || (x != null && x.equals(y));)
emi-le
23
jika kebetulan Anda memiliki akses ke perpustakaan Jakarta Commons, ada ObjectUtils.equals () dan banyak fungsi berguna lainnya.
Jawaban:
Dengan Java 7 Anda sekarang dapat langsung melakukan aman nol sama dengan:
Objek. Sama (x, y)
(Perpustakaan Jakarta Commons ObjectUtils.equals () telah menjadi usang dengan Java 7)
sumber
return (x == y) || (x != null && x.equals(y));
)jika kebetulan Anda memiliki akses ke perpustakaan Jakarta Commons, ada ObjectUtils.equals () dan banyak fungsi berguna lainnya.
EDIT: salah membaca pertanyaan awalnya
sumber
Jika Anda menggunakan <1.7 tetapi memiliki Jambu Biji tersedia:
Objects.equal(x, y)
sumber