जेनेरिक में वाइल्डकार्ड संग्रह प्रकार के लिए हैं और आमतौर पर तत्व संग्रहित नहीं होने के लिए हैं।
उदाहरण के लिए एक विधि की कल्पना करें जो तर्क List<Number>
लेता है।
public void calculateSum(List<Number> numbers) {
for (Number n: numbers) {
// calculate Sum
}
}
अब, हम List<Integer>
गुजर इस प्रकार से पूर्णांकों का योग की गणना करना चाहते हैं।(ध्यान दें कि Integer
Number
का एक उपवर्ग है)
List<Integer> integers= new ArrayList<Integer>();
//Populate collection
calculateSum(integers); //Error
इस के रूप में भले ही Integers
Number
List<Integers>
की एक उप-प्रकार है काम नहीं करेगा एक उप प्रकार नहीं List<Number>
की है। ध्यान दें कि List<Number>
अभी भी स्टोर कर सकते हैं Integer
, Float
, Double
आदि
तो, Number
किसी भी प्रकार की राशि हम वाइल्डकार्ड का उपयोग के रूप में
public void calculateSum(List<? extends Number> numbers) {
for (Number n: numbers) {
// calculate Sum
}
}
इस राशि की गणना करेगा इस प्रकार की गणना करने के लिए एक सामान्य विधि के लिए किसी भी प्रकार की संख्या के मुताबिक उस प्रकार Number
विस्तारित करता है। वास्तव में आप क्या जानना चाहते हैं। Http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html –
"सूची शब्द सूची से अधिक प्रतिबंधित है संख्या बढ़ाता है> क्योंकि पूर्व सूची से मेल खाता है टाइप नंबर केवल, जबकि बाद वाले प्रकार की संख्या या इसके किसी भी उप-वर्ग की सूची से मेल खाता है। " संसाधन से, ऊपर से जुड़े SURESH। –
Fildor
आप इसे देख सकते हैं। http://www.thejavageek.com/2013/08/28/generics-the-wildcard-operator/ –