किसी मौजूदा उत्तर में जोड़ना, मुझे यकीन नहीं है कि यह प्रश्न के बाद से एक नए जावा संस्करण की वजह से है, लेकिन जब मैंने ऑब्जेक्ट के बजाय पैरामीटर के रूप में इंटीजर लेने के तरीके के साथ कोड संकलित करने का प्रयास किया , कोड अभी भी संकलित किया था। हालांकि, पैरामीटर के रूप में शून्य के साथ कॉल अभी भी रन-टाइम पर स्ट्रिंग पैरामीटर विधि का आह्वान किया गया है।
उदाहरण के लिए,
public void testMethod(int i){
System.out.println("Inside int Method");
}
public void testMethod(String s){
System.out.println("Inside String Method");
}
अभी भी उत्पादन दे देंगे:
Inside String Method
जब कहा जाता है के रूप में:
test1.testMethod(null);
इसके लिए मुख्य कारण यह है कि स्ट्रिंग के रूप में अशक्त को स्वीकार करता है एक मूल्य और int नहीं करता है। तो शून्य को एक स्ट्रिंग ऑब्जेक्ट के रूप में वर्गीकृत किया जाता है।
प्रश्न पर वापस आकर पूछे जाने पर, ऑब्जेक्ट केवल तभी होता है जब कोई नई वस्तु बनाई जाती है।यह द्वारा
test1.testMethod((Object) null);
या एक आदिम डेटा प्रकार के लिए वस्तु के किसी भी प्रकार का उपयोग कर एक वस्तु के रूप में किसी भी प्रकार के कास्टिंग अशक्त द्वारा किया जाता है जैसे
test1.testMethod((Integer) null);
or
test1.testMethod((Boolean) null);
या बस
द्वारा एक नई वस्तु बनाने के द्वारा
test1.testMethod(new Test1());
यह ध्यान देने योग्य है कि
test1.testMethod((String) null);
फिर से स्ट्रिंग विधि का आह्वान करेगा क्योंकि इससे स्ट्रिंग प्रकार का ऑब्जेक्ट बन जाएगा।
इसके अलावा,
test1.testMethod((int) null);
and
test1.testMethod((boolean) null);
बूलियन बूलियन और पूर्णांक कोई मान्य मान के रूप में और पूर्णांक के रूप में अशक्त को स्वीकार नहीं करते के बाद से एक संकलन समय त्रुटि दे देंगे! = पूर्णांक और बूलियन! =। इंटीजर और बूलियन प्रकार प्रकार int और बूलियन के ऑब्जेक्ट्स में डाला गया।
+1 यह सुपर आसान सवाल की तरह लग रहा था, लेकिन शून्य का उपयोग ... यह वास्तव में दिलचस्प है ... –
संभवतः डुप्लिकेट [विधि ओवरलोडिंग में अजीब जावा शून्य व्यवहार] (http://stackoverflow.com/questions/14789478/ अजीब-जावा-नल-व्यवहार-इन-विधि-ओवरलोडिंग) –
@ रोहितजैन यह सवाल पहले से ही [डुप्लिकेट] है [http://stackoverflow.com/questions/1545501/which-overload-will-get- चयनित- फॉर-नल-इन-जावा) – mariomario