public class OverloadTest {
public static void main(String ar[]){
OverloadTest t = new OverloadTest();
t.add(5,5);
}
// 1st method
public void add(int i , int j){
System.out.println("In Primitive type" + (i+j))
}
// 2nd method
public void add(Integer i , Integer j){
System.out.println("In Object type" + (i+j))
}
}
यह कोड पूरी तरह से काम करता है। मैं समझना चाहता हूं कि एक संकलन समय की त्रुटि नहीं होनी चाहिए क्योंकि 5 को एक एंगर ऑब्जेक्ट (Integer.valueOf (5)) से स्वत: नियंत्रित किया जाएगा और दूसरा तरीका चुनना चाहिए। कोई संकलन समय त्रुटि क्यों है?
उत्तर:
जवाब के लिए 3 № 1आप ऑटोबॉक्सिंग होने की उम्मीद क्यों करेंगे? एक उपयुक्त विधि की खोज करते समय, संकलक पहले यह देखने के लिए जांचता है कि क्या सादे अंतर प्रकार के लिए लागू तरीके हैं या नहीं। केवल अगर ऐसी विधि नहीं मिली है तो ऑटोबॉक्सिंग खेल में आता है।
इस प्रक्रिया में वर्णित है JLS .518.5.1.