2011-07-21 17 views
6

Map<?, ?> जावा में क्या मतलब है?
मैं ऑनलाइन देखा है, लेकिन उस पर किसी भी लेख को खोजने के लिए प्रतीत नहीं कर सकते हैं।जावा में मानचित्र <?, ?> का अर्थ क्या है?

संपादित करें: मैं MP3 Duration Java

+3

'Map' कर रहे हो? या '' भाग, जैसा कि _generics_ में है? आप जावाडोक को देखा है? – c00kiemon5ter

+0

ठीक है, मैं निश्चित रूप से जेनेरिक और वाइल्डकार्ड के बारे में बात कर रहा हूं। '<' भाग प्रश्न में छिपा हुआ था; एचटीएमएल के रूप में व्याख्या की। मैंने सवाल संपादित किया। – c00kiemon5ter

+0

@ C00k - आप प्रश्न को फिर से संपादित करना चाहते हैं, '' दिखाई नहीं दे रहा है। – Paul

उत्तर

3

? में एक प्लेसहोल्डर जिसका मान आप (एक वाइल्डकार्ड) में कोई दिलचस्पी नहीं कर रहे हैं इंगित करता है:

HashMap<?, ?> foo = new HashMap<Integer, String>(); 

और चूंकि ? एक वाइल्डकार्ड है, तो आप इसे छोड़ सकते हैं और अभी भी एक ही परिणाम प्राप्त करें:

HashMap foo = new HashMap<Integer, String>(); 

लेकिन वे तैयार करें या जेनरिक सबसेट तक इस्तेमाल किया जा सकता प्रयोग की जाने वाली। इस उदाहरण में, पहले जेनेरिक को Serializable इंटरफेस को लागू करना होगा।

// would fail because HttpServletRequest does not implement Serializable 
HashMap<? extends Serializable, ?> foo = new HashMap<HttpServletRequest, String>(); 

लेकिन इन वाइल्डकार्ड की बजाय कंक्रीट कक्षाओं का उपयोग करना हमेशा बेहतर होता है। आप केवल ? का उपयोग करना चाहिए यदि आप जानते हैं कि आपके _collection_ में के रूप में :)

+3

कच्चा प्रकार वाइल्डकार्ड के समान परिणाम नहीं है! बिल्कुल नहीं! – Affe

+0

ओह सच में? मुझे यह नहीं पता था। ये पहले दो मामले एक-दूसरे से अलग कैसे होते हैं? – mana

+3

वाइल्ड कार्ड का अर्थ है 'यह एक मानचित्र है जिसमें इसमें कुछ विशिष्ट प्रकार की बाधा वाली चीज है, लेकिन मुझे नहीं पता कि यह क्या है।' कच्चा प्रकार सिर्फ कच्चा प्रकार है, इसके बारे में कुछ भी नहीं पता है, कोई बाधा नहीं है, वहां कुछ भी हो सकता है। कंपाइलर आपको मानचित्र पर चीजों को जोड़ने नहीं देगा, लेकिन आप कच्चे मानचित्र में जो कुछ भी चाहते हैं उसे डाल सकते हैं। – Affe

10

Map<?,?> पर इस पाया मतलब है संकलन समय पर, यदि आप नहीं जानते कि क्या मानचित्र की कुंजी और मान वस्तु के वर्ग प्रकार होने जा रहा है।

इसका एक वाइल्डकार्ड प्रकार। http://download.oracle.com/javase/tutorial/extra/generics/wildcards.html

+0

में मानचित्र को देखूंगा क्षमा करें, मैं जेनेरिक पर अच्छा नहीं हूं लेकिन 'मानचित्र ' और 'मानचित्र ' के बीच मतभेद क्या हैं? –

+1

'कक्षा नाम ' वह है जो आप कक्षा या इंटरफेस को "परिभाषित" करने के लिए लिखेंगे। 'क्लासनाम ' वह है जिसे आप अज्ञात (किसी भी प्रकार) के साथ अपने प्रोग्राम में जेनेरिक क्लास "उपयोग" करने के लिए लिखेंगे। – Kainsin

3

मैं इस लेख में पाया गया कि explains wildcard parametrization of generics

+0

लिंक – powerMicha

+0

लिंक के लिए +1 एंजेलिका का दस्तावेज वह है जहां जेनेरिक काम करने की कोशिश करते समय हर कोई समाप्त होता है। – SteveD

1

Java5 के बाद से, जेनेरिक्स भाषा के साथ प्रदान की जाती हैं। http://download.oracle.com/javase/tutorial/java/generics/index.html

नोटेशन का अर्थ है कि आप जिस मानचित्र को बना रहे हैं, वह वर्ग ए की एक वस्तु को एक कुंजी के रूप में स्वीकार करेगा और कक्षा बी के ऑब्जेक्ट को मान के रूप में स्वीकार करेगा।

यह एक डेवलपर के रूप में आप में मदद करता है ताकि आप अब और सही वर्ग के लिए एक वस्तु डाली अभ्यस्त। तो अगर आप एक के अलावा अन्य कुंजी और बी के अलावा अन्य objets बदसूरत डाले बचना और समय की कमी

1

Map<?,?> आपको बताता है कि आप key और अपने नक्शे में value के लिए हर वस्तु का उपयोग कर सकते संकलन प्रदान करने के साथ मानचित्र का उपयोग करने सकेंगे। ,

Map<String, YourCustomObject> map 
इस नक्शे में

तो तुम केवल put एक String कुंजी के रूप में और YourCustomObject मूल्य के रूप में कर सकते हैं:

लेकिन आमतौर पर ऐसा जेनरिक उपयोग करने के लिए अधिक उपयोगी है।

जेनरिक पर इस tutorial देखें।

0

? जेनेरिक में वाइल्डकार्ड है। सूर्य ... er ... ओरेकल जेनरिक here पर एक अच्छा ट्यूटोरियल है। वाइल्डकार्ड पर एक अलग अनुभाग है।

आप शायद एक बेहतर जवाब है, तो आप इस तरह के जहां Map<?, ?> देखा के रूप में अपने प्रश्न का अधिक संदर्भ, पोस्ट प्राप्त होगी।

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