2009-04-19 14 views
11

मैं निम्नलिखित hashmap घोषित किया है HashMaps।प्राप्त() जावा के लिए समारोह

अगर मैं "hives.get (2)" कहता हूं तो क्या यह उस स्थान पर ऑब्जेक्ट हाइव की एक प्रति वापस करेगा या इसका संदर्भ होगा?

मेरा लक्ष्य उस स्थान पर हाइव ऑब्जेक्ट को संशोधित करना है। यदि यह संदर्भ देता है, तो मैं केवल लौटा हुआ हाइव संशोधित कर सकता हूं और किया जा सकता है। हालांकि, अगर एक प्रति वापस आती है तो मुझे उस प्रतिलिपि को हैशपैप में वापस रखना होगा।

सरल प्रश्न के लिए खेद है। मैंने एक समाधान के लिए चारों ओर देखने की कोशिश की, लेकिन हर जगह मैंने देखा कि यह मूल्य वापस आ जाएगा, यह नहीं कहा कि यह मूल्य की एक प्रति या इसके संदर्भ में होगा।

धन्यवाद, जैन

उत्तर

16

यह एक संदर्भ देता है। आप यह मान सकते हैं कि यह मामला तब तक है जब तक अन्यथा निर्दिष्ट नहीं किया जाता है।

8

आपको इसका संदर्भ मिलेगा-जावा ऑब्जेक्ट्स हमेशा संदर्भ द्वारा पारित होते हैं।

+1

- जावा मूल्य से गुजरता है। http://javadude.com/articles/passbyvalue.htm – cherouvim

+6

ठीक है, क्योंकि आप जावा में ऑब्जेक्ट पॉइंटर्स को डिफरेंस नहीं कर सकते हैं, मुझे लगता है कि यह * तकनीकी रूप से * पास-बाय-वैल्यू है। लेकिन यह कहकर कि सवाल पूछने वाले व्यक्ति के लिए पूरी तरह से भ्रामक होगा। यह मेरी राय में, एक नाटकीय तर्क की तरह लगता है। – hbw

+4

जावा में सब कुछ मूल्य से गुजरता है। आप मूल्य के आधार पर ऑब्जेक्ट संदर्भों को पास करते हैं। यदि आपने संदर्भ द्वारा ऑब्जेक्ट संदर्भ पारित किया है, तो आप संदर्भ के मान को बदल सकते हैं। इसके अलावा, एक बुलाया विधि कैली विधि में संदर्भ के मूल्य को बदल सकता है। जावा इसका समर्थन नहीं करता है, क्योंकि यह केवल मूल्य से गुजरता है। –

4

जावा में सबकुछ बाइट, शॉर्ट, इंट, लांग, फ्लोट, डबल और चार को छोड़कर संदर्भ में पारित किया जाता है। उपरोक्त प्रकार जावा में एकमात्र आदिम प्रकार हैं, और मूल्य से पारित होते हैं। यदि आप मूल्य से प्रतिलिपि चाहते हैं तो आपको उस वस्तु में अपनी खुद की विधि बनाने की आवश्यकता है जो स्वयं की एक गहरी प्रतिलिपि वापस कर देगी।

+0

- जावा मूल्य से गुजरता है। http://javadude.com/articles/passbyvalue.htm – cherouvim

+2

ठीक है। जावा सख्ती से मूल्य से गुजरता है, हालांकि यह जो गुजरता है वह वस्तु का संदर्भ है। –

+4

यह एक महत्वपूर्ण अंतर है - यदि जावा वास्तव में "संदर्भ द्वारा पास किया गया" तो यदि आपने myHashMap.get (2) = null कहा था तो मूल ऑब्जेक्ट हैश मैप में कुंजी 2 के साथ पास हो जाएगा अब शून्य हो जाएगा। लेकिन यह नहीं होगा। हां, पूरा "मूल्य से गुजरता है जहां मूल्य वास्तव में एक संदर्भ है" भ्रमित है, लेकिन वास्तव में इसे समझना महत्वपूर्ण है। –

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