मुझे एक क्विज़ में यह प्रश्न आया,
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);
}
}
यह एक संकलित त्रुटि कहती है "विधि विधि (StringBuffer), MoneyCalc प्रकार के लिए अस्पष्ट है"