2012-09-12 10 views

उत्तर

7

the javadoc से:

इस सूची तत्व शामिल नहीं है, तो यह अपरिवर्तित

तो यहाँ एक प्रकार बाधा जोड़ने बस बेकार हो सकता है, जबकि add पर बाधा संकलन पर सुनिश्चित करता है सूची में समय बॉक्स में लिखा गया है।

नोट कार्यान्वयन के लिए कुछ स्वतंत्रता है कि वहाँ के रूप में विधि एक

ClassCastException फेंकने के लिए करता है, तो निर्दिष्ट तत्व के प्रकार इस सूची (वैकल्पिक) के साथ असंगत है की अनुमति दी है

ArrayList कार्यान्वयन इस अपवाद को फेंक नहीं देता है:

439 public boolean remove(Object o) { 
440   if (o == null) { 
441    for (int index = 0; index < size; index++) 
442     if (elementData[index] == null) { 
443      fastRemove(index); 
444      return true; 
445     } 
446   } else { 
447    for (int index = 0; index < size; index++) 
448     if (o.equals(elementData[index])) { 
449      fastRemove(index); 
450      return true; 
451     } 
452   } 
453   return false; 
454  } 

इसका मतलब है कि आपके पास नहीं है हटाने के संचालन से पहले कच्चे माल की कक्षा की जांच करने के लिए।

+0

लेकिन अगर हम गलत प्रकार के साथ इसका आह्वान करते हैं तो यह कोई संकलन समय त्रुटि नहीं देगा। यदि मैं कुछ सरणी में शामिल करता हूं तो तत्व को निकालने के लिए मैं क्या कर रहा था। 'list.remove (सरणी [i]) करने के बजाय, मैंने 'list.remove (array)' किया था जिसे मैंने रनटाइम के दौरान पाया था। – cmn

+0

आपकी सूची कार्यान्वयन के आधार पर, गलत प्रकार की वस्तु को निकालने का प्रयास करने के लिए यह पूरी तरह से कानूनी हो सकता है। यह "डिज़ाइन द्वारा" है और कभी-कभी उपयोगी होता है (यदि आपके पास "निकालने" के लिए कच्ची वस्तुएं हैं, तो इसका मतलब है कि निकालने के संचालन से पहले आपको अपनी कक्षा की जांच करने की आवश्यकता नहीं है)। –

+0

मैं सादा ऐरेलिस्ट का उपयोग कर रहा हूं। लेकिन मैंने सोचा कि इस तरह की त्रुटियों को कम करने के लिए जेनेरिक पेश किए गए थे। – cmn

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