java - Why is code that returns a genericized Map generating a compiler warning when assigned to a generic Map? -
मेरे पास इस हस्ताक्षर के साथ एक विधि है:
सुरक्षित अंतिम मानचित्र & lt; स्ट्रिंग, ऑब्जेक्ट & gt; मानचित्र & lt; स्ट्रिंग, ऑब्जेक्ट & gt;
और इस विधि (एक उपवर्ग में) के साथ बुलाया गया:
Params = buildOutputMappings (ra, md);
मुझे यह संकलक चेतावनी मिलती है:
चेतावनी: चेतावनी: रेखा (136) [अनचेक] अनचेक रूपांतरण मिला: java.util.Map आवश्यक: java .util.Map & LT; java.lang.String, java.lang.Object & gt;
एक ungenericized मानचित्र पर params बदल रहा है संकलक चेतावनी निकालता है यह क्यों और कैसे टाला जा सकता है (दमन के अलावा)?
संपादित करें: यह जेडीके 1.5 है, और रेखा 136 ऊपर दिए गए असाइनमेंट स्टेटमेंट है। न तो वर्ग को पैरामीटर बना दिया गया है स्ट्राइक>, उनके पास केवल ऐसे तरीके हैं जो एक सामान्य प्रकार का मानचित्र वापस करते हैं विधि के भीतर लौटा वस्तु भी सामान्यीकृत है।
संपादित करें: सुपर क्लास वास्तव में सामान्यीकृत है, हालांकि रिटर्न वैल्यू का उन जेनेरिक के साथ कुछ नहीं करना है यहां विधि का कोड है, हालांकि अस्वीकरण के साथ कि मैंने यह नहीं लिखा है और मुझे पता है कि यह बदसूरत है:
संरक्षित अंतिम मानचित्र & lt; स्ट्रिंग, ऑब्जेक्ट & gt; BuildOutputMappings (AbstractDataObject ado, MDBase md) DAOException फेंकता {try {.... Map & lt; स्ट्रिंग, ऑब्जेक्ट & gt; पैराम्स = नया हैशमॉप & lt; स्ट्रिंग, ऑब्जेक्ट & gt; (spc.getNumberInParams ()); .... वापसी परम; } पकड़ (अपवाद ई) {logger.undeterminedError (e); नए डीएओएक्सेशन (ई। मेसेसेज (), ई) फेंक; }}
यहां क्लास घोषणापत्र दिए गए हैं:
सार्वजनिक सार वर्ग डीएओबेस & lt; टी एब्स्ट्रक्टडेटाऑब्जेक्ट & gt; सार्वजनिक वर्ग के RoleAssignmentDAO डीएओबेस <फैलता है
मेरा अनुमान है कि आप जेनेरिक का सही उपयोग नहीं कर रहे हैं उपवर्ग, और कंपाइलर कक्षा के लिए जेनेरिक को अक्षम कर रहा है। इस प्रकार buildOutputMappings कॉल के लिए वापसी प्रकार कच्चे प्रकार में परिवर्तित किया जा रहा है और चेतावनी उत्पन्न की जा रही है। पैरेंट क्लास पैरामीट्रेट क्या है? उप वर्ग में पैरेंट वर्ग पैरामीटर के प्रकार शामिल हैं?
संक्षेप में, आपकी त्रुटि उप-वर्ग या पैरेंट क्लास में कहीं न कहीं गिरा दिया जाने वाला पैरामीटर है।
Comments
Post a Comment