जोड़ने के साथ आप जेनेरिक प्रकार के उप-प्रकार के सभी तत्वों को जोड़ने में सक्षम होना चाहते हैं। इसमें List<String>
के सभी तत्वों को List<Object>
में शामिल करना शामिल है। हम इस संग्रह या किसी उप-प्रकार में संग्रहीत प्रकार वाले किसी भी संग्रह को स्वीकार करने के लिए ? extends E
का उपयोग करते हैं।
boolean addAll(java.util.Collection<? extends E> es);
List<Number> numbers = ...;
List<Integer> integers = ...;
numbers.addAll(integers);//works
boolean addAll(java.util.Collection<E> es);
numbers.addAll(integers);//does not work E != Integer
हम ?
कि के रूप में उपयोग नहीं कर सकते जेनरिक द्वारा प्रदान की किसी भी सुरक्षा को दूर करेंगे।
boolean addAll(java.util.Collection<? extends E> es);
List<Number> numbers = ...;
List<Integer> integers = ...;
List<String> strings = ...;
numbers.addAll(integers);//works
numbers.addAll(strings);//error
boolean addAll(java.util.Collection<?> es);
numbers.addAll(strings);//works - now we have strings in our Number collection
हम ?
का उपयोग नंबर की सूची से एक स्ट्रिंग को दूर करने के अभ्यस्त एक List<Number>
को प्रभावित कोशिश कर के बाद से वस्तुओं को हटाने के लिए कर सकते हैं।
boolean removeAll(java.util.Collection<?> objects);
List<Objects> objects = ...;
List<Integer> integers = ...;
List<Number> numbers = ...;
numbers.removeAll(objects);//works
numbers.removeAll(integers);//works
boolean removeAll(java.util.Collection<? extends E> objects);
numbers.removeAll(objects);//does not work
numbers.removeAll(integers);//works
boolean removeAll(java.util.Collection<? super E> objects);
numbers.removeAll(objects);//works
numbers.removeAll(integers);//does not work
वह यही नहीं पूछ रहा है। – SLaks
क्षमा करें अगर मैं गलत समझा। :( – Nicocube