2012-07-09 31 views
23

संभव डुप्लिकेट:
What does List<?> mean in java generics?
What does the question mark in Java generics' type parameter mean?जेनिक्स <?> वास्तव में क्या मतलब है?

क्षमा चाहते हैं लेकिन यह <?> के लिए खोज करने की कोशिश कर रहा मुश्किल था।

जावा जेनेरिक के संबंध में क्या मतलब है? मैं <A extends B> और <A super B> समझता हूं, लेकिन मैंने पहले कभी इस प्रश्न चिह्न को कभी नहीं देखा है।

+0

"प्रतीक हाउंड" के साथ खोज करने का प्रयास करें - http: //www.symbolhound।कॉम/ –

+0

कोई बात नहीं है तो ' – newacct

उत्तर

35

<?><? extends Object> के लिए एक आशुलिपि, यह भी एक असीम वाइल्डकार्ड के रूप में जाना जाता है। तो आप अपने सामान्य में किसी भी प्रकार की वस्तु निर्दिष्ट कर सकते हैं।

उदाहरण के लिए List कक्षा List<?> के रूप में घोषित की गई है, क्योंकि यह आपकी इच्छित चीज़ों की एक सूची हो सकती है।


संसाधन:

+0

है? तो आप जेनेरिक का उपयोग क्यों कर रहे हैं? मुझे नहीं लगता कि अंतर बनाने का अच्छा जवाब है। क्योंकि ' UnKnown

8

यह एक wildcard प्रकार। यह ? extends Object

के लिए छोटा है यदि आप इसे प्राप्त करते हैं, तो आप जानते हैं कि यह Object है। यदि आप सेट करने का प्रयास करते हैं, तो आप ऐसा नहीं कर सकते क्योंकि यह ऑब्जेक्ट का कोई उप वर्ग हो सकता है।

+5

'कक्षा ' और 'कक्षा' के बीच क्या अंतर है? मुझे कक्षा के बजाय 'कक्षा ' का उपयोग करने की आवश्यकता क्यों होगी? – ycomp

+1

@ycomp कच्चे प्रकार के सामान्य बंद है। उदाहरण के लिए। मानचित्र मानचित्र; map.entrySet() एक सादा सेट है, न कि '' सेट करें, जबकि 'मानचित्र ' का उपयोग करें और आप एंट्रीसेट एक 'सेट > ' –

+0

क्यों न केवल उस मामले में ऑब्जेक्ट का उपयोग करें? जेनेरिक का उपयोग करने का क्या फायदा है? – Davor

3

इसका एक वाइल्डकार्ड है। मान लें कि आपके पास संग्रह है लेकिन उस संग्रह का प्रकार ज्ञात नहीं है, इस प्रकार आप इसे "?" से दर्शाते हैं। यह बस निर्दिष्ट करता है कि प्रकार ज्ञात नहीं है। अधिक जानकारी के लिए http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf देखें मुझे यकीन है कि इससे मदद मिलेगी।

3

वाइल्डकार्ड जेनेरिक "कुछ" है। इसे ऑब्जेक्ट से विस्तारित कुछ के रूप में संभाला जाएगा।

जावा documentation से: (?)

सामान्य कोड में मौजूद प्रश्न चिह्न, वाइल्डकार्ड कहा जाता है, एक अज्ञात प्रकार का प्रतिनिधित्व करता है। वाइल्डकार्ड का उपयोग स्थितियों में किया जा सकता है: पैरामीटर, फ़ील्ड या स्थानीय चर के प्रकार के रूप में; कभी-कभी रिटर्न प्रकार के रूप में (हालांकि यह बेहतर प्रोग्रामिंग अभ्यास अधिक विशिष्ट होने के लिए है)। एक सामान्य विधि आवंटन, एक सामान्य वर्ग उदाहरण निर्माण, या एक सुपरटेप के लिए वाइल्डकार्ड का उपयोग कभी भी एक प्रकार तर्क के रूप में नहीं किया जाता है।

तो, उदाहरण के लिए, List<?> अज्ञात प्रकार से ऑब्जेक्ट वाली एक सूची है।

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