Java: 未经检查的转换类型安全警告

Java: Type Safety warning with unchecked conversion

我在我的项目中使用 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;
        }

JSONObject#Keys() 方法 returns Iterator 的原始类型,您正在尝试将其分配给 Iterator<Object> 的引用。参考 JSONObject.

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

@SuppressWarnings("unchecked")(您可以放置​​在方法级别或您要抑制的行的正上方。

其次,了解代码的作用可能很重要,因为您的代码有效,但读起来有点奇怪。

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

随后在您的代码中将所有键转换为字符串。您也可以只创建一个字符串迭代器并跳过强制转换。

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