सवाल यह सब कहते हैं ..सूची के रिमोट विधि कच्चे है
सूची के कोड से:
जोड़ें विधि public boolean remove(Object o) { .. }
वहाँ किसी भी है इसके लिए विशिष्ट कारण?
सवाल यह सब कहते हैं ..सूची के रिमोट विधि कच्चे है
सूची के कोड से:
जोड़ें विधि public boolean remove(Object o) { .. }
वहाँ किसी भी है इसके लिए विशिष्ट कारण?
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 }
इसका मतलब है कि आपके पास नहीं है हटाने के संचालन से पहले कच्चे माल की कक्षा की जांच करने के लिए।
लेकिन अगर हम गलत प्रकार के साथ इसका आह्वान करते हैं तो यह कोई संकलन समय त्रुटि नहीं देगा। यदि मैं कुछ सरणी में शामिल करता हूं तो तत्व को निकालने के लिए मैं क्या कर रहा था। 'list.remove (सरणी [i]) करने के बजाय, मैंने 'list.remove (array)' किया था जिसे मैंने रनटाइम के दौरान पाया था। – cmn
आपकी सूची कार्यान्वयन के आधार पर, गलत प्रकार की वस्तु को निकालने का प्रयास करने के लिए यह पूरी तरह से कानूनी हो सकता है। यह "डिज़ाइन द्वारा" है और कभी-कभी उपयोगी होता है (यदि आपके पास "निकालने" के लिए कच्ची वस्तुएं हैं, तो इसका मतलब है कि निकालने के संचालन से पहले आपको अपनी कक्षा की जांच करने की आवश्यकता नहीं है)। –
मैं सादा ऐरेलिस्ट का उपयोग कर रहा हूं। लेकिन मैंने सोचा कि इस तरह की त्रुटियों को कम करने के लिए जेनेरिक पेश किए गए थे। – cmn