Eşittir yerine NullPointerException fırlatır eğer kötü bir fikir mi?
null, ile ilgili equals sözleşme aşağıdaki gibidir:
BoÅŸ olmayan herhangi bir referans deÄŸer
x,x.equals(null)return false.
Bu o1 != null o2 == null, eğer var çünkü oldukça garip.:
o1.equals(o2) // returns false
o2.equals(o1) // throws NullPointerException
o2.equals(o1) throws NullPointerException aslında programcı hatası bizi uyarır, çünkü iyi bir şeydir. Ve henüz, bu hata çeşitli nedenlerden dolayı biz sadece etrafında sadece "" yerine. sessizce başarısız olur o1.equals(o2), geçtiyseniz avlanır olmaz
O zaman sorular şöyle:
- Neden
o1.equals(o2)12 **NullPointerExceptionatmak yerine gereken iyi bir fikir mi? - Mümkün olan her yerde fena fikir biz
anyObject.equals(null)NullPointerExceptionatmak böylece sözleşme yeniden yazmak yerine?
Comparable ile karşılaştırma
Buna karşılık, bu Comparable contract diyor ki:
nullherhangi bir sınıfın örneği değil, vee.compareTo(null)e.equals(null)falsedöner olsa daNullPointerExceptionatmak gerektiğini unutmayın.
NullPointerException compareTo neden equals için değil mi? uygun ise
İlgili sorular
Tamamen semantik bir tartışma
Bu Object.equals(Object obj) belgelerinde gerçek sözleri:
Bazı belirtirdiğer nesne""bu bir. eşittir
Ve bir nesne nedir?
JLS 4.3.1 Objects
Birnesnebirsınıf örneğiya da bir dizi.
Referans deÄŸerleri (genellikle sadecereferanslarnesne bu ve
nullözel bir referans işaretçiler, hangihiçbir nesne anlamına gelir.
Bu açıdan benim iddiam çok basit.
equalsbazı testler isterdiğer nesne""this. eşittirnullreferans verirdiğer nesnetest için- Bu nedenle,
equals(null)NullPointerExceptionatmak gerekir
CEVAP
Bu asimetri tutarsız olup olmadığı sorusu için, bence değil, ve ko-bir: bu antik Zen başvurmak istiyorum
- EÄŸer bir sonraki adam kadar iyi olursa, herhangi bir adama sor, ve her "Evet" diyecek.
- Eğer bir kimse kadar iyi olursa, herhangi bir adama sor, ve her "hayır" diyecektir.
- Eğer herhangi bir erkek kadar iyi olursa kimse sormak ve hiç bir cevap alırsınız.
O anda, derleyici aydınlanma ulaştı.

JavaScript doğrulayıcı Eclipse NullPoi...
Neden eğer sözlük anahtarı varsa kontr...
Strlen eğer bir döngü koşulu yerine ku...
EÄŸer(pointer) kullanmak yerine eÄŸer be...
Nasıl windows altında EĞER yerine CR L...