generics - Java Collections: Pass collection of children as collection of parents -


मेरे पास एक इंटरफ़ेस और कुछ वर्ग हैं:

  सार्वजनिक इंटरफ़ेस IPanel & lt; ComponentType Component & gt; ; {सार्वजनिक शून्य जोड़ने वाले घटक (सेट & lt; ComponentType & gt; घटक); सार्वजनिक घटक टाइप करें (); } सार्वजनिक वर्ग बटन घटक प्रदान करता है {} सार्वजनिक वर्ग LocalizedButton बटन विस्तारित {} सार्वजनिक वर्ग ButtonPanel लागू IPanel & lt; बटन & gt; {सार्वजनिक शून्य addComponents (सेट & lt; बटन & gt; घटक) {... / * का उपयोग करता है () * /; } सार्वजनिक बटन बनाएं () {नया बटन लौटें (); }} पब्लिक क्लास लोकलाइटेडबटन्सपैनेल बटनों को बढ़ाता है {पब्लिक बटन बनाएं () {नया लोकलियाट्यूबटन लौटें); }}  

तब मेरे पास स्थानीयकृत बटन्स का एक सेट है और जब मैं कॉल करता हूं

  अंतिम स्थानीयकृत बटननपनल स्थानीयकृत बटननपनल = नया लोकलियाटुटपटल (); अंतिम सेट & lt; स्थानीयकृत बटन & gt; स्थानीयकृत बेट्ससेट = नया लिंक्ड एचशसेट & lt; स्थानीयकृत बटन & gt; (); localizedButtonsPanel.addComponents (localizedButtonsSet);  

मुझे लगता है कि यह तर्क इस तर्क के लिए लागू नहीं है। अगर मैं इस विधि को addComponents (सेट करें & lt; स्थानीयकृत बटन & gt; बटन) में LocalizedButtonsPanel के रूप में अतिभारित करने का प्रयास करता हूं, तो मुझे निश्चित रूप से प्रकार का विलोपन मिलता है।

हो सकता है कुछ पैटर्न याद किया जाता है या चालित इस वास्तुकला से निपटने के लिए स्थानीयकृत बटनों का सेट जोड़ना सही करने के लिए मौजूद है?


मुझे जवाब मिल गया है और मैं अपना उदाहरण अधिक ठोस बनाना चाहता हूं - मेरे पास है मेरे कार्यान्वयन में कुछ मान्यकर्ता, इसलिए मुझे संग्रह के प्रकार को सामान्य के रूप में संग्रहीत करने की आवश्यकता है, जो कोड को सरलीकृत करता है I उत्तर का उपयोग कर रहा हूं:

  सार्वजनिक इंटरफ़ेस IPanel & lt; ComponentType घटक, संग्रह प्रकार बढ़ाता है संग्रह का विस्तार & lt ;? घटक प्रदान करता है & gt; & gt; मान्य है & lt; संग्रह प्रकार & gt; {सार्वजनिक शून्य जोड़ने के लिए (संग्रह प्रकार घटक); सार्वजनिक घटक टाइप करें (); } सार्वजनिक वर्ग बटन घटक प्रदान करता है {} सार्वजनिक वर्ग LocalizedButton बटन को बढ़ाता है {} सार्वजनिक वर्ग बटन Panel imanel & lt; बटन, सेट & lt ;? बटन & gt; & gt; {सार्वजनिक शून्य addComponents (सेट करें & lt;; बटन & gt; घटक बढ़ाता है) {... / * का उपयोग करता है () * /; } सार्वजनिक बटन बनाएं () {नया बटन लौटें (); }} पब्लिक क्लास लोकलाइटेडबटन्सपैनेल बटनों को बढ़ाता है {पब्लिक बटन बनाएं () {नया लोकलियाट्यूबटन लौटें); }}  

और इस स्थिति में, यह काम करता है

बदलें

ताकि विधियों बटन के उप वर्गों के सेट स्वीकार करता है

  सार्वजनिक शून्य addComponents (सेट & lt ;? बटन & amp; घटक)  

के लिए addComponents () हस्ताक्षर। इस तरह से, आप एक सेट करें & lt; स्थानीयकृत बटन & gt; एक तर्क के रूप में कर सकते हैं, क्योंकि LocalizedButton विस्तार बटन और इसलिए पैरामीटर से मेल खाता है सेट करें & lt ;? बटन & gt; बढ़ाता है।


Comments

Popular posts from this blog

Eclipse CDT variable colors in editor -

AJAX doesn't send POST query -

wpf - Custom Message Box Advice -