2009-06-15 17 views
9

मैं एक वस्तु रिक्त है या नहीं सत्यापित करने के लिए कोशिश कर रहा हूँ और मैं इस वाक्य रचना का उपयोग कर रहा:किसी वस्तु की तुलना शून्य से करें!

void renderSearch(Customer c){ 
     System.out.println("search customer rendering>..."); 
     try { 
      if(!c.equals(null)){    
       System.out.println("search customer found..."); 
      }else{    
       System.out.println("search customer not found..."); 
      } 
     } catch (Exception e) { 
      System.err.println ("search customer rendering error: " 
            + e.getMessage()+"-"+e.getClass()); 
     } 
    } 

मैं निम्न अपवाद प्राप्त करें:

search customer rendering error: null class java.lang.NullPointerException

मैंने सोचा था कि मैं इस संभावना के साथ विचार कर रहा था मेरा अगर और अन्य लूप। किसी भी सहायता की सराहना की जाएगी।

+1

प्लस। अगर और अन्य को लूप नहीं कहा जाता है। इसकी स्थिति – Midhat

उत्तर

21

अपने कथन में सी! = शून्य की कोशिश करें। आप ऑब्जेक्ट्स की तुलना नहीं कर रहे हैं, आप उनके संदर्भों की तुलना कर रहे हैं।

10

का उपयोग करें, क्योंकि आप संदर्भ की तुलना कर रहे हैं, ऑब्जेक्ट्स नहीं।

8

उपयोग ग == बातिल

के बराबर होती है विधि (आमतौर पर) प्रकार ग्राहक की एक बहस की उम्मीद है, और वस्तु पर कुछ तरीकों कॉल कर रहे हैं। यदि वह ऑब्जेक्ट शून्य है तो आपको NullPointerException मिलेगा।

इसके अलावा अशक्त हो c सकता है और c.equals कॉल वस्तु पारित कर दिया

+0

अन्य लोगों की तुलना में अधिक स्पष्ट है – Gattsu

11
!c.equals(null) 

कि लाइन ग पर बराबरी विधि बुला रहा है की परवाह किए बिना अपवाद फेंकने किया जा सकता है, और अगर ग तो रिक्त है आप हूँ उस त्रुटि को प्राप्त करें क्योंकि आप शून्य पर किसी भी विधि को कॉल नहीं कर सकते हैं। इसके बजाय आप का उपयोग करना चाहिए

c != null 
3

सबसे अधिक संभावना वस्तु ग इस मामले में रिक्त है।

यदि आप इसे अलग तरीके से व्यवहार करने की आवश्यकता है तो आप ग्राहक के बराबर के डिफ़ॉल्ट कार्यान्वयन को ओवरराइड करना चाहेंगे।

यह भी सुनिश्चित करें कि इस पर कार्यवाही करने से पहले पास ऑब्जेक्ट शून्य नहीं है।

-2

अगर सी वस्तु शून्य मान तो बयान शून्य मान की तुलना करने के लिए प्रयोग किया जाता निम्नलिखित होने:

if (c.toString() == null) { 

    System.out.println("hello execute statement"); 

} 
+2

नहीं। 'सी 'स्वयं शून्य है, इसलिए आपको एक NullPointerException मिल जाएगा। – user1071777

संबंधित मुद्दे