java - Is there a need to use bounded wildcard generics in a passthrough method? -


मुझे पता है कि संग्रह & lt; E & gt; :

  सार्वजनिक शून्य जोड़ें सभी (संग्रह & lt ;? ई & gt; उपसंरक्षण फैलता है);   

हम संग्रह & lt ;? का उपयोग करते हैं सुपर ई और gt; वहां संग्रह को अनुमति देने के लिए जहां उप-तत्वों का केवल अस्तित्व है, उदाहरण:

  सूची & lt; drivable & gt; ड्रावबल्स = नए अर्रेलिस्ट & lt; & gt; (); सूची के & lt; कार & gt; कारें = नए अर्रेलिस्ट & lt; & gt; (); // हमें यहां वाइल्डकार्ड की आवश्यकता है, क्योंकि निम्न पंक्ति: drivables.addAll (कार);   

हालांकि, क्या मेरी बाध्यता वाली वाइल्डकार्ड मेरी निम्नलिखित विधि में आवश्यक हैं?

  सार्वजनिक स्थिर & lt; E & gt; संग्रह के & lt; ई & gt; needNonEmpty (अंतिम संग्रह & lt; E & gt; संग्रह) NoSuchElementException फेंकता है {if (collection.isEmpty ()) {नया NoSuchElementException ("संग्रह खाली होना चाहिए"); } वापसी संग्रह; }   

यह Objects.requireNonNull (T ऑब्जेक्ट) जैसा एक समान idiom का उपयोग करता है, जो वास्तव में T ऑब्जेक्ट देता है

तो, क्या कोई भी लाभ (या यह भी गलत है?) मेरे तरीके को निम्नलिखित के रूप में लिखना है?

  सार्वजनिक स्थिर & lt; E & gt; संग्रह के लिए & lt ;? सुपर ई & gt; needNonEmpty (अंतिम संग्रह & lt ;? ई और संग्रह; फैली हुई है);    

संग्रह का उपयोग & lt ;? ई & gt; फैली

पारगमन पारित पैरामीटर को सार्वभौमिक दाता बनाता है - अर्थात् इसे स्वतंत्रता से पढ़ा जा सकता है।

आपको पास संग्रह से ऑब्जेक्ट पढ़ने की आवश्यकता नहीं है किसी वाइल्डकार्ड की आवश्यकता नहीं है।

संयोग से संग्रह का उपयोग कर & lt ;? सुपर ई & gt;

एक स्पष्ट परिचय के लिए देखें।

इसके अलावा एक अच्छा जवाब इस कवर।

/ div>

Comments

Popular posts from this blog

Verilog Error: output or inout port "Q" must be connected to a structural net expression -

jasper reports - How to center align barcode using jasperreports and barcode4j -

c# - ASP.NET MVC - Attaching an entity of type 'MODELNAME' failed because another entity of the same type already has the same primary key value -