आप सही हैं कि primitives अलग-अलग व्यवहार किए गए हैं। निम्नलिखित काम करेगा:
(Integer)(int)input.charAt(i);
अंतर यह है कि तर्क एक int
, (Integer)
बक्से पूर्णांक है जब। यह वास्तव में एक कलाकार नहीं है, भले ही ऐसा लगता है। लेकिन अगर तर्क char
है, तो यह एक कास्ट प्रयास होगा; लेकिन primitives वस्तुओं को नहीं डाला जा सकता है और इसलिए यह काम नहीं करता है। आप कर सकते हैं सबसे पहले char
से int
पर डालना है - यह कास्ट ठीक है क्योंकि दोनों प्राचीन प्रकार हैं - और फिर int
बॉक्स किया जा सकता है।
बेशक, char
->Integer
मुक्केबाजी काम कर रहा है। "क्यों नहीं?" एक अच्छा सवाल है। शायद इस तरह की सुविधा के लिए बहुत कम उपयोग किया गया होगा, खासकर जब एक ही समारोह थोड़ा और स्पष्ट होकर हासिल किया जा सकता है। (चाहिए char
->Long
काम भी है, तो और char
->Short
वर्ण 16 बिट कर रहे हैं, तो यह सबसे सरल हो सकता है??।)
उत्तर संपादित करने के लिए: आवरण वर्गों के लाभ यह है कि लिपटे पुरातन वस्तुओं की तरह व्यवहार किया जा सकता है: उदाहरण के लिए List<Integer>
में संग्रहीत। List<int>
काम नहीं करेगा, क्योंकि int
कोई ऑब्जेक्ट नहीं है। तो शायद और भी प्रासंगिक सवाल होगा, ओओ भाषा में आदिम गैर-वस्तुएं क्या कर रही हैं? जवाब प्रदर्शन में है: प्राइमेटिव तेज़ हैं और कम मेमोरी लेते हैं। उपयोग केस निर्धारित करता है कि वस्तुओं की सुविधा या प्राइमेटिव के प्रदर्शन अधिक महत्वपूर्ण है या नहीं।
स्रोत
2011-12-15 10:45:38
दिलचस्प।मैंने सोचा होगा कि यह ऑटो बॉक्स किया जा सकता है। – DerMike