दो दिनों में मैं जावा में एक परीक्षा है, और मैं इस सवाल का जवाब पता नहीं कर सकते हैं:जावा ओवरलोडिंग: संख्या, संख्या; पूर्णांक, डबल
class ClassA {
public String foo(Integer x , int y) {
return "Integer, int";
}
public String foo(int x, Double y) {
return "int, Double";
}
public String foo(Number x, Number y) {
return "Number, Number";
}
public String foo(Object x, Object y) {
return "Object, Object";
}
public static void main(String... args) {
ClassA a = new ClassA();
System.out.print(a.foo(5, 1.2f) + " ");
System.out.println(a.foo(null, null));
}
}
उत्पादन क्या है?
जवाब है:
Number, Number Number, Number
मुझे पता है कि जावा हमेशा चुनता सबसे निर्दिष्ट विधि, यही वजह है कि a.foo(null,null);
Number,Number
विधि और नहीं Object,Object
विधि envoke होगा। लेकिन a.foo(5,1.2f);
भी Number,Number
विधि को हल करता है और int,Double
विधि नहीं है ??
लेकिन एक और बात जो उपयोगी हो सकता है: तो मैं हटाने f
के बाद 1.2
, ताकि कॉल है: a.foo(5,1.2);
मैं एक संकलक त्रुटि मिलती है, कि यह Number,Number
और int,Double
विधि के बीच चयन नहीं कर सकते .. ।
, सच में मददगार होगा अगर तुम लोग मुझे लगता है कि समझा सकता है :)
http://stackoverflow.com/a/9362386/368544 (यह बताते हैं अशक्त, नल)। फ्लोट केस मामूली है। – mschonaker