ठीक है, सबसे पहले, आप नए HashMap
निर्माण कॉल के साथ स्मृति बर्बाद कर रहे हैं। आपकी दूसरी पंक्ति पूरी तरह से इस निर्मित हैशप के संदर्भ को अनदेखा करती है, जिससे इसे कचरा कलेक्टर के लिए उपलब्ध कराया जाता है। तो, ऐसा नहीं करते हैं कि, उपयोग:
private Map<String, String> someMap = (HashMap<String, String>)getApplicationContext().getBean("someMap");
दूसरे, संकलक शिकायत कर रहा है कि आप पता चल सके कि यह एक HashMap
है बिना एक HashMap
करने के लिए वस्तु डाली। लेकिन, अगर आप ऐसा करना चाहते थे:
if(getApplicationContext().getBean("someMap") instanceof HashMap) {
private Map<String, String> someMap = (HashMap<String, String>)getApplicationContext().getBean("someMap");
}
आपको शायद यह चेतावनी भी मिल जाएगी। समस्या यह है कि, getBean
Object
देता है, इसलिए यह अज्ञात है कि प्रकार क्या है। इसे HashMap
में कनवर्ट करने से सीधे दूसरे मामले में समस्या नहीं आती है (और शायद पहले मामले में कोई चेतावनी नहीं होगी, मुझे यकीन नहीं है कि जावा कंपाइलर को जावा 5 के लिए चेतावनियों के साथ पैडेंटिक कैसे है)। हालांकि, आप इसे HashMap<String, String>
में परिवर्तित कर रहे हैं।
हैशमैप्स वास्तव में ऐसे मानचित्र हैं जो किसी ऑब्जेक्ट को एक कुंजी के रूप में लेते हैं और यदि आप चाहें तो HashMap<Object, Object>
के रूप में ऑब्जेक्ट लेते हैं। इस प्रकार, इस बात की कोई गारंटी नहीं है कि जब आप अपनी बीन प्राप्त करते हैं तो इसे HashMap<String, String>
के रूप में प्रदर्शित किया जा सकता है क्योंकि आपके पास HashMap<Date, Calendar>
हो सकता है क्योंकि लौटाए गए गैर-सामान्य प्रतिनिधित्व में कोई ऑब्जेक्ट हो सकता है।
यदि कोड संकलित करता है, और आप बिना किसी त्रुटि के String value = map.get("thisString");
निष्पादित कर सकते हैं, तो इस चेतावनी के बारे में चिंता न करें। लेकिन यदि नक्शा स्ट्रिंग कुंजियों के लिए स्ट्रिंग कुंजियों से पूरी तरह से नहीं है, तो आपको रनटाइम पर ClassCastException
मिलेगा, क्योंकि जेनेरिक इस मामले में ऐसा होने से अवरुद्ध नहीं कर सकते हैं।
संबंधित/शिकार: [मैं अनियंत्रित डाली चेतावनी को कैसे संबोधित करते हैं?] (Http://stackoverflow.com/q/509076) – blahdiblah
संभव डुप्लिकेट [मैं अनचेक कास्ट चेतावनियों को कैसे संबोधित करूं?] (http://stackoverflow.com/questions/509076/how-do-i-address-unchecked-cast-warnings) –
मैं वास्तव में कलाकारों की जांच करने के लिए नियमित रूप से आया पैराशनाइज्ड हैश मैप, जो अनचेक कास्ट चेतावनी को समाप्त करता है: [link] (http://stackoverflow.com/questions/509076/how-do-i-address-unchecked-cast-warnings/509230#509230) मैं यह कहूंगा "सही" समाधान है, लेकिन इसके लायक है या नहीं, यह बहस योग्य हो सकता है। :) – skiphoppy