2013-04-13 4 views
5

उदाहरण के लिए, इस कोड को देखो:रैपरर्स अनबॉक्सिंग का उपयोग करते समय intValue() विधि की आवश्यकता क्या है?

मैं unboxing

उपयोग कर सकते हैं:

Integer myInt = new Integer(5); 
int i1 = myInt.intValue(); 
int i2 = myInt; 

System.out.println(i1); 
System.out.println(i2); 

आप देख सकते हैं, मैं primive के आवरण से मेरी पूर्णांक मान को कॉपी करने के दो तरीके है या

मैं विधि intValue()

तो उपयोग कर सकते हैं ... क्या एक विधि होने जब वहाँ पहले से ही है की ज़रूरत नहीं है unboxing?

उत्तर

9

अनबॉक्सिंग जावा 5 में पेश किया गया था। रैपर (इस विधि सहित) मूल रिलीज के बाद से वहां रहे हैं।

Javadoc

का एक लिंक उस समय (1996) हम intValue() प्रणाली की जरुरत किया था और के रूप में ओरेकल की गारंटी देता है पिछड़े पश्च संगतता ... ऊपर एक निश्चित स्तर तक (यह हमेशा प्रमुख रिलीज़ पर 100% नहीं है में)।

विधि में रहने के लिए है।

+0

तो, आज मैं JDK7 साथ लगता है यह से unboxing उपयोग करना बेहतर है पुराना intValue()। – user1883212

+0

@ user1883212 डेल्टालिमा की तरह उनके जवाब में दिखाया गया है, मुक्केबाजी/अनबॉक्सिंग कुछ अजीब परिणाम दे सकता है, जब तक आप जानते हों कि आप क्या कर रहे हैं, दोनों प्रणालियों में से किसी एक का उपयोग करने के लिए स्वतंत्र महसूस करें। – Frank

7

फ्रैंक जवाब के अलावा जो एक अच्छा ऐतिहासिक परिप्रेक्ष्य वहाँ अभी भी कुछ स्थितियों में intValue() आज का उपयोग करने की आवश्यकता है देता है।

निम्नलिखित ख़तरा पता चलता है कि आप एक Integerint एक के रूप में मानते नहीं कर सकते हैं के प्रति सचेत रहें:

Integer i1 = new Integer(5); 
Integer i2 = new Integer(5); 

//This would be the way if they were int 
System.out.println(i1 == i2); //Returns false 

//This is the way for Integers 
System.out.println(i1.intValue()==i2.intValue()); //Returns true 
System.out.println(i1.equals(i2)); //Returns true 

रिटर्न

false 
true 
true 
+0

कौन जानता है कि इस वजह से कितने परेशान खरोंच और खरोंच वाले सिर हैं। कंटेनर में अनुक्रमणित करते समय और मूल्यों की तुलना करने की कोशिश करते समय इस अप्रत्याशित रूप से चलाने के लिए काफी विशिष्ट है। जैसे 'सूची ए; '' एजेट (i) == एजेट (i - 1) '' झूठी' लौटाता है भले ही दोनों स्थितियों में 'पूर्णांक (5) 'है ... – AndrewJC

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

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