जोश ब्लोच का निमोनिक पीईसीएस यहां उपयोगी है। यह खड़ा के लिए:
निर्माता extends
, उपभोक्ता super
इसका मतलब यह है कि जब एक पैरामिट्रीकृत प्रकार एक पद्धति के लिए पारित किया जा रहा T
की उदाहरणों (वे किसी तरह से यह से प्राप्त किया जाएगा), ? extends T
चाहिए उत्पादन करेगा इस्तेमाल किया जाए, क्योंकि T
के उप-वर्ग के किसी भी उदाहरण को T
भी है।
एक पैरामिट्रीकृत प्रकार एक विधि T
की उदाहरणों (वे इसे करने के लिए पारित हो जाएगा कुछ करने के लिए), T
का एक उदाहरण कानूनी तौर पर कोई भी तरीका है कि स्वीकार करने के लिए पारित किया जा सकता है क्योंकि ? super T
इस्तेमाल किया जाना चाहिए की खपत होगी करने के लिए पारित किया जा रहा जब T
के कुछ सुपरटेप। उदाहरण के लिए Comparator<Number>
Collection<Integer>
पर उपयोग किया जा सकता है। ? extends T
काम नहीं करेगा, क्योंकि Comparator<Integer>
Collection<Number>
पर काम नहीं कर सका।
संपादित करें:
public T something();
^
ऊपर एक विधि है कि T
का उत्पादन होता है: प्राप्त/पुट (उत्पादन/उपभोग) पर एक छोटे से अधिक स्पष्ट करने के लिए।
public void something(T t);
^
उपरोक्त एक तरीका है जो T
का उपभोग करता है।
"निर्माता extends
, उपभोक्ता super
" इस ऑब्जेक्ट का उपयोग करने के लिए पैरामीटरयुक्त ऑब्जेक्ट को किस तरीके से पारित किया जा रहा है, इस पर लागू होता है। Collections.max()
के मामले में, आइटम Collection
से पुनर्प्राप्त किए जाएंगे, इसलिए यह एक निर्माता है। उन वस्तुओं को Comparator
पर विधि के तर्क के रूप में पारित किया जाएगा, इसलिए यह एक उपभोक्ता है।
मुझे लगता है कि शायद मैं पूरी तरह समझ/समझने के सिद्धांत को समझ नहीं पा रहा हूं ... ??? –
मैं प्रभावी जावा के अध्याय को पढ़ने की अनुशंसा करता हूं जो "पीईसीएस" पर चर्चा करता है। और इस बारे में सोचें: अगर मैंने आपको डबल्स की सूची सॉर्ट करने के लिए कहा है, और आपको इसे करने के लिए एक तुलनात्मक दिया है, तो आप इसके बारे में कैसा महसूस करेंगे? –
क्या आप अपना उत्तर विस्तारित कर सकते हैं? जबकि उन्नत जावा प्रोग्रामर के लिए उत्तर स्पष्ट हो सकता है, लेकिन आप जो भी कह रहे हैं उसे पूरी तरह से समझने के लिए प्रश्न को फिर से पढ़ना आवश्यक है। मुझे पता है कि यह आपके पहले के उत्तरों में से एक हो सकता है, लेकिन यह निम्न गुणवत्ता वाले पोस्ट समीक्षा अनुभाग में दिखाई देता है। - [समीक्षा से] (https://stackoverflow.com/review/low-quality-posts/11445740) – Ferrybig