2013-08-29 13 views
9

क्या कोई कृपया बता सकता है कि ArrayList<?>, ArrayList और ArrayList<Object> के बीच का अंतर क्या है, और प्रत्येक का उपयोग कब किया जाए? क्या वे सभी समान हैं या क्या कार्यान्वयन स्तर पर प्रत्येक का कुछ अलग अर्थ है?ArrayList <?>, ArrayList, ArrayList <Object> के बीच क्या अंतर है?

+7

'जावा जेनरिक' – anubhava

+0

के बारे में पढ़ने का समय मैं आमतौर पर कोई पैरामीटर नहीं डालता ... इसके "नकली" जेनेरिक वैसे भी। – texasbruce

+3

@texasbruce यह वास्तव में एक बुरा विचार है। – arshajii

उत्तर

17

ArrayList<Object>विशेष रूप से जबकि ArrayList<?>Object रों की एक सूची एक सूची जिसका ठोस प्रकार हम अनिश्चित हैं (है जिसका अर्थ है कि हम null को छोड़कर सूची में कुछ भी नहीं जोड़ सकते हैं)। आप बाद वाले का उपयोग करेंगे जब सूची का प्रकार अप्रासंगिक है, उदा। जब आप जिस ऑपरेशन को करना चाहते हैं वह सूची के प्रकार पर निर्भर नहीं होता है। उदाहरण के लिए:

public static boolean isBigEnough(ArrayList<?> list) { 
    return list.size() > 42; 
} 

यह सब generics tutorial (wildcards अनुभाग देखें) में शामिल है।

अंत में, ArrayList कोई प्रकार पैरामीटर के साथ raw type है: एकमात्र कारण यह भी अनुमति दी गई है 5 के तहत जावा संस्करणों के साथ पीछे की ओर संगतता के लिए है, और आप इसे का उपयोग जब भी संभव से बचना चाहिए।

+1

स्वीकार नहीं करती है यह एक नया परिप्रेक्ष्य है :) –

+0

बहुत अच्छा। मैं कुछ टेस्ट प्रोजेक्ट्स में ऐरेलिस्ट का उपयोग कर रहा था (जैसा कि मैंने इसे कुछ ट्यूटोरियल्स में इस्तेमाल किया था।) टेकवे है, हमेशा का उपयोग करें जब आप कर सकते हैं – Chrips

1

ArrayList<?> मतलब है

ArrayList "एक प्रकार निर्धारित किया जाना है जो युक्त एक ArrayList उदाहरण" एक ArrayList

एक ArrayList<Object> का वर्ग है Object प्रकार युक्त ArrayList का एक उदाहरण है।

यह लगता है कि यह इस पर एक अच्छा लेख हो (और अधिक) हो सकते हैं: http://docs.oracle.com/javase/tutorial/java/generics/types.html

+0

मुझे लगता है कि ओपी पूछ रहा है कि चूंकि जावा में सब कुछ ऑब्जेक्ट से फैला हुआ है, इसका मतलब यह है कि "एक प्रकार जिसे निर्धारित किया जाना है"? चूंकि सूची प्राइमेटिव्स – Victor

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