Eşittir yerine NullPointerException fırlatır eğer kötü bir fikir mi? | Netgez.com
SORU
22 Mayıs 2010, CUMARTESİ


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 ** NullPointerException atmak yerine gereken iyi bir fikir mi?
  • Mümkün olan her yerde fena fikir biz anyObject.equals(null) NullPointerException atmak böylece sözleÅŸme yeniden yazmak yerine?

Comparable ile karşılaştırma

Buna karşılık, bu Comparable contract diyor ki:

null herhangi bir sınıfın örneği değil, ve e.compareTo(null) e.equals(null) false döner olsa da NullPointerException atmak 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.

  • equals bazı testler isterdiÄŸer nesne""this . eÅŸittir
  • null referans verirdiÄŸer nesnetest için
  • Bu nedenle, equals(null) NullPointerException atmak gerekir

CEVAP
22 Mayıs 2010, CUMARTESİ


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ı.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • Eric Anthony

    Eric Anthony

    13 AÄžUSTOS 2011
  • GFX Tutorials

    GFX Tutorial

    12 AÄžUSTOS 2013