मैं एक प्रश्नोत्तरी में यह सवाल भर में आया था,एक ओवरलोडेड विधि कैसे चुना जाता है जब पैरामीटर शाब्दिक शून्य मान होता है?
public class MoneyCalc {
public void method(Object o) {
System.out.println("Object Verion");
}
public void method(String s) {
System.out.println("String Version");
}
public static void main(String args[]) {
MoneyCalc question = new MoneyCalc();
question.method(null);
}
}
इस कार्यक्रम का उत्पादन "स्ट्रिंग संस्करण" है। लेकिन मुझे समझ में नहीं आया कि एक ओवरलोडेड विधि को शून्य करने के कारण स्ट्रिंग संस्करण का चयन क्यों किया गया। क्या शून्य स्ट्रिंग वेरिएबल कुछ भी नहीं है?
लेकिन जब कोड को बदल दिया गया है,
public class MoneyCalc {
public void method(StringBuffer sb) {
System.out.println("StringBuffer Verion");
}
public void method(String s) {
System.out.println("String Version");
}
public static void main(String args[]) {
MoneyCalc question = new MoneyCalc();
question.method(null);
}
}
यह कह
आप एक शून्य मान के लिए एक स्ट्रिंग असाइन कर सकते हैं तो यह वैध है और जावा और सबसे प्रोग्रामिंग भाषाओं के लिए आदेश निकटतम प्रकार के लिए फिट है और उसके बाद आपत्ति उठाने का। – JonH
http://stackoverflow.com/a/1572499/231290 – Lukasz
जाहिर है इस लोग हैं, जो केवल शीर्षक पढ़ द्वारा डुप्लीकेट के रूप में बंद हो गया। यहां वास्तविक सवाल यह है कि एक विशिष्ट अधिभार क्यों चुना गया था, न कि "शून्य क्या है"। – interjay