/ / जावा: अनियंत्रित रूपांतरण के साथ सुरक्षा चेतावनी टाइप करें - जावा, ग्रहण, चेतावनी

जावा: अनचेक रूपांतरण - जावा, ग्रहण, चेतावनियों के साथ सुरक्षा चेतावनी टाइप करें

मैं अपने प्रोजेक्ट में जावा का उपयोग कर रहा हूं। जब मैं किसी jSON ऑब्जेक्ट से कुंजी प्राप्त करने की कोशिश करता हूं तो मुझे यह चेतावनी मिलती है: Type safety: The expression of type Iterator needs unchecked conversion to conform to Iterator मैंने ठीक करने की कोशिश की @SupressWarning("unchecked") लेकिन ग्रहण अभी भी फ़ाइल पर चेतावनी दिखाता है। मैं नहीं जानता कि क्या गलत हो रहा है।

   public static HashMap<String, String> jsonToMap(final JSONObject jsonMap)
throws JSONException {
HashMap<String, String> map = new HashMap<String, String>();
Iterator<Object> keys = jsonMap.keys();
while (keys.hasNext()) {
String key = (String) keys.next();
String value = jsonMap.getString(key);
map.put(key, value);

}
return map;
}

उत्तर:

उत्तर № 1 के लिए 1

शुरुआत के लिए, चेतावनी ने "आपको चोट नहीं पहुंचाई। यह सिर्फ एक सिर है।"
यह भी सुनिश्चित करें कि आपके पास वाक्यविन्यास अधिकार है। यह होना चाहिए:

@SuppressWarnings ("अनियंत्रित") (आप जिस स्तर को दबाने के लिए चाहते हैं उसके ठीक ऊपर विधि स्तर या जगह पर रख सकते हैं।

दूसरे, यह शायद समझना महत्वपूर्ण है कि कोड क्या कर रहा है, क्योंकि आपके पास क्या काम है, लेकिन यह थोड़ा अजीब तरीके से पढ़ता है।

चेतावनी मूल रूप से कहती है कि आपके पास एक अज्ञात प्रकार का पुनरावृत्त है और आप "यह मानकर चल रहे हैं कि यह वस्तुओं का एक Iterator है।"

फिर बाद में अपने कोड में आप स्ट्रिंग्स के लिए सभी चाबियाँ डालते हैं। आप इसके बजाय सिर्फ स्ट्रिंग्स के एक Iterator बना सकते हैं और कलाकारों को छोड़ सकते हैं।

Iterator<String> keys = jsonMap.keys();
while (keys.hasNext()) {
String key = keys.next();
String value = jsonMap.getString(key);
map.put(key, value);
}

जवाब के लिए 0 № 2

JSONObject#Keys() विधि रिटर्न Iterator कच्चे प्रकार की और आप इसे संदर्भित करने की कोशिश कर रहे हैं Iterator<Object>। देखें JSONObject.