ग्रहण मुझे निम्नलिखित रूप की चेतावनी दे रहा है:
प्रकार की सुरक्षा: ऑब्जेक्ट से हैशमैप तक अनियंत्रित कास्ट
यह एक कॉल से एक एपीआई के लिए है जिस पर मेरा कोई नियंत्रण नहीं है जो वस्तु लौटाता है:
HashMap<String, String> getItems(javax.servlet.http.HttpSession session) {
HashMap<String, String> theHash = (HashMap<String, String>)session.getAttribute("attributeKey");
return theHash;
}
यदि संभव हो तो मैं ग्रहण की चेतावनी से बचना चाहूंगा, क्योंकि सैद्धांतिक रूप से वे कम से कम संभावित कोड समस्या का संकेत देते हैं। मैं इसे एक को खत्म करने का एक अच्छा तरीका नहीं मिला है, हालांकि। मैं एक विधि से जुड़ी एकल लाइन को अपने आप निकाल सकता हूं और @SuppressWarnings("unchecked")
उस विधि में जोड़ सकता हूं , इस प्रकार कोड के ब्लॉक होने के प्रभाव को सीमित करता हूं जहां मैं चेतावनियों को नजरअंदाज करता हूं। कोई बेहतर विकल्प? मैं ग्रहण में इन चेतावनियों को बंद नहीं करना चाहता।
इससे पहले कि मैं कोड में आता, यह सरल था, लेकिन फिर भी उकसाया चेतावनी:
HashMap getItems(javax.servlet.http.HttpSession session) {
HashMap theHash = (HashMap)session.getAttribute("attributeKey");
return theHash;
}
जब आप हैश का उपयोग करने की कोशिश करते हैं तो समस्या कहीं और थी: आपको चेतावनी मिलेगी:
HashMap items = getItems(session);
items.put("this", "that");
Type safety: The method put(Object, Object) belongs to the raw type HashMap. References to generic type HashMap<K,V> should be parameterized.
enum
या जैसे उदाहरण Class<T>
) का प्रतिनिधित्व करती है , इसलिए आप इसे देख सकते हैं और जान सकते हैं कि यह सुरक्षित है।