2010-10-29 12 views
6

बस आश्चर्य हुआ कि इंटीजर को तर्क के रूप में क्यों पास करना संभव है जहां विधि पैरामीटर int प्रकार का है और इसके विपरीत?int के लिए पूर्णांक पास करना और इसके विपरीत

public class Salmon { 

public static Integer foo(Integer a, int b){ 
    return a - b; 
} 
public static void main(String[] args) { 
    Integer a = 10; 
    int b = 1; 
    foo(b, a); 
} 
} 

उत्तर

7

यह वह जगह है ऑटो मुक्केबाजी और ऑटो unboxing। असल में संकलक Integer.valueOf() या x.intValue() पर कॉल में उचित रूप से कॉल करता है।

सटीक तंत्र वास्तव में निर्दिष्ट नहीं है, लेकिन spec के प्रासंगिक खंड 5.1.7 and 5.1.8 हैं।

+3

यह ध्यान दिया जाना चाहिए कि यह सुविधा इसके साथ रहस्यमय NullPointerException समस्याओं का एक वर्ग लाती है। – Pointy

+0

क्या आप विकसित कर सकते हैं? किस मामले में यह एक NullPointerException फेंक दिया जाएगा? – mxdsp

+0

@mxdsp: यह सवाल का हिस्सा नहीं है। यदि आप एक एनपीई में भाग रहे हैं तो आप समझा नहीं सकते हैं, कृपया * पूर्ण * शोध करने के बाद एक नया प्रश्न पूछें। (एनपीई पर * बहुत सारे प्रश्न हैं।) –

संबंधित मुद्दे