दिलचस्प पोस्ट
जावा: क्लास.इस इन्स्टैन्स बनाम क्लास.इस एसेग्नेबल पैकेज लोड करने पर संदेशों को अक्षम करें आईआईएस 7 पर उपडोमेन कैसे सेट अप करें I कस्टम ऑब्जेक्ट्स के वेक्टर को छांटें उद्देश्य सी में विधि जलसेवा के खतरों क्या हैं? एक LINQ क्वेरी परिणाम सेट से डेटासेट या डेटाटाले भरना कैसे जावा में प्रतिबिंब के साथ आंतरिक वर्ग को इन्स्तांत? AngularJS – बाल क्षेत्र तक पहुंच डीएओ और रिपॉपीटरी पैटर्न के बीच अंतर क्या है? एमपीआई संचार लागत को मापने के लिए उपकरण एक निर्देशित आलेख में चक्रों का पता लगाने के लिए सर्वश्रेष्ठ एल्गोरिथ्म क्या मैं आराम के बारे में नहीं समझ रहा हूँ? जावा का समर्थन अहस्ताक्षरित ints क्यों नहीं करता है? एंड्रॉइड ओपन और फाइल्स को Google ड्राइव एसडीके में / से सहेजें जांच करें कि छवि दूरस्थ URL पर मौजूद है या नहीं

जावा जेनरिक में 'सुपर' और 'एक्स्टेंड्स' के बीच अंतर क्या है

मैं जावा जेनेरिक सीखने की कोशिश कर रहा हूं मैं स्पष्ट नहीं हूं कि जब आप <T extends Foo> और जब आप <T super Foo> उपयोग करेंगे इन चीजों में से हर एक टी के बारे में क्या मतलब है? कहें कि मेरे पास <T extends Comparable> और <T super Comparable> , इसका मतलब क्या है?

मैंने sun.com पर कई ट्यूटोरियल पढ़ा है, लेकिन मैं अभी भी खो गया हूं क्या कोई उदाहरण के साथ वर्णन कर सकता है?

धन्यवाद!

वेब के समाधान से एकत्रित समाधान "जावा जेनरिक में 'सुपर' और 'एक्स्टेंड्स' के बीच अंतर क्या है"

प्रभावी जावा 2 संस्करण देखें, आइटम 28:

पी ई सी एस

पी roducer xtends, सी onsumer एस uper

यदि आपका पैरामीटर निर्माता है, तो यह <? extends T> होना चाहिए <? extends T> <? extends T> , अगर यह उपभोक्ता है तो <? super T> होना चाहिए <? super T> <? super T>

Google कलेक्शंस पर एक नज़र डालें, वे इसका उपयोग कैसे करते हैं, क्योंकि उन्हें ब्लाच मिला;)

यह निर्भर करता है कि यह विरासत पदानुक्रम पर किस तरह की अनुमति देता है। मान लें कि आपके पास एक क्लास "बाल" है जो "अभिभावक" से प्राप्त होता है जो "दादाजी" से प्राप्त होता है

<T extends Parent> करता है <T extends Parent> माता-पिता या बच्चे को स्वीकार करता है, जबकि <T super Parent> माता-पिता या दादाजी को स्वीकार करता है।

तीन प्रकार के वाइल्डकार्ड हैं:

  • ? extends Type ? extends Type : टाइप Type के उपप्रकारों के एक परिवार को निरूपित करता है। यह सबसे उपयोगी वाइल्डकार्ड है
  • ? super Type ? super Type : ? super Type सुपरटेप्स के एक परिवार को सूचित करता है।
  • ? : सभी प्रकार के सेट या किसी भी

मेरे लिए सबसे अच्छा जवाब @ बीजिंग से आया, जब मैंने चाचा बॉब का लेख पढ़ा। मैं यहाँ फिर से शुरू, लेख के समापन

सूची < सुपर सुपर सूट> जब भी आप सूची में लिखने जा रहे हैं का उपयोग करें।

जब आप किसी ऑब्जेक्ट को सूची में डालते हैं, तो आप सभी की परवाह करते हैं कि ऑब्जेक्ट एक प्रकार का है जो सूची द्वारा आयोजित प्रकार के साथ संगत है। तो आप सूची को उस ऑब्जेक्ट के प्रकार या उस ऑब्जेक्ट के किसी भी सुपर-क्लासेस को लेना चाहते हैं।

सूची का उपयोग करें <टी सूट बढ़ाता है > जब भी आप एक सूची से पढ़ने जा रहे हैं

दूसरी ओर, जब आप एक सूची से पढ़ते हैं, तो आप चाहते हैं कि आप जिस प्रकार टाइप कर रहे हैं वह सूची उस सूची में है, या उस प्रकार से व्युत्पन्न है।

यदि आप प्रकार पैरामीटर के बारे में पूछ रहे हैं, तो वहां कोई <T super X> जावा में निर्माण नहीं है। extend पैरामीटर केवल extend कर सकते extend , लेकिन यह एक से अधिक प्रकार का विस्तार कर सकता है। उदाहरण के लिए

 public class MyClass< T extends Closeable & Runnable > { // Closeable and Runnable are chosen for demonstration purposes only } 

इस मामले में यदि आप MyClass< ConcreteT > देखते हैं तो कंक्रीटट को इस रूप में घोषित किया जाना चाहिए

 public class ConcreteT implements Closeable, Runnable { ... } 

बाध्य वाइल्डकार्ड के लिए, इस लेख को पढ़ें। पढ़ें -सिद्धांत पर अनुभाग पढ़ें असल में, super शब्दार्थ write लिए मेल खाती है, और extends शब्दों को पढ़ाने के लिए संबंधित है।

पीईसीएस याद रखें- निर्माता उपभोक्ता सहायता को बढ़ाता है इसके अलावा, चाचा बॉब ने अपने शिल्पकार श्रृंखला में अच्छी तरह से चर्चा की। http://objectmentor.com/resources/articles/The_Craftsman_44__Brown_Bag_I.pdf देखें