Java:使用未经检查的转换键入安全警告

时间:2015-09-14 12:37:02

标签: java eclipse warnings

我在我的项目中使用java。当我尝试从json对象获取密钥时,我收到此警告:Type safety: The expression of type Iterator needs unchecked conversion to conform to Iterator我试图通过@SupressWarning('unchecked')进行修复,但eclipse仍会在文件中显示警告。我不知道出了什么问题。

   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;
        }

2 个答案:

答案 0 :(得分:1)

对于初学者来说,这个警告不会伤到你。它只是一个抬头 另外,请确保您具有正确的语法。它应该是:

@SuppressWarnings(&#34;未经检查&#34;)(您可以放置​​在方法级别或您想要压制的行的正上方。

其次,理解代码正在做什么可能很重要,因为你有什么工作,但它看起来有点奇怪。

警告基本上说你有一个未知类型的迭代器,并且你假设它是对象的迭代器。

然后在代码中将所有键转换为字符串。你也可以改为创建一个字符串迭代器并跳过演员表。

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

答案 1 :(得分:0)

JSONObject#Keys()方法返回原始类型的Iterator,并且您尝试将其分配给Iterator<Object>的引用。请参阅JSONObject