2012-12-17 23 views
6

संभव डुप्लिकेट:
Java: Long result = -1: cannot convert from int to longजावा समर्थन और ऑटोबॉक्सिंग का समर्थन क्यों नहीं करता है?

उदाहरण Integer foo = 4 के लिए और Long foo = 4L दोनों संकलन है, लेकिन Long foo = 4 नहीं करता है। क्या इसके लिए कोई तर्क है?

+2

अच्छा सवाल। मुझे आश्चर्य है कि क्या इससे कुछ अस्पष्टताएं पैदा होंगी। (+1) – NPE

+0

तकनीकी रूप से, 'लंबे foo = 4' का संकलन समय पर मूल्यांकन नहीं किया जा सकता है। –

+0

आप ऑटोबॉक्सिंग के साथ रूपांतरण को मिलाते हैं। – Bevor

उत्तर

4
Long foo = 4; 

का अर्थ है: वर्ग Long की एक वस्तु के मूल्य 4 के एक int आवंटित। यह ऐसा करने और विफल होने के लिए ऑटोबॉक्सिंग का उपयोग करने का प्रयास करेगा, क्योंकि ऑटोबॉक्सिंग केवल उपयुक्त आदिम के लिए लागू होती है। यह दो तरह से ठीक किया जा सकता: पहले मामले में

Long foo = (long) 4; 
Long foo = 4L; 

आप 4. करने के लिए डाली दूसरी में, आप एक लंबे प्रदान करते हैं।

प्रश्न का उत्तर देने के लिए: जावा ऑटो-कास्टिंग का समर्थन नहीं करता है और बहुत टाइपिंग में सख्त है, शायद यही कारण है कि यह स्वचालित रूप से इसका समर्थन नहीं करता है।

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

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