【问题标题】:Java: Type Safety warning with unchecked conversionJava:带有未经检查的转换的类型安全警告
【发布时间】:2015-12-10 11:12:24
【问题描述】:

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

【问题讨论】:

    标签: java eclipse warnings


    【解决方案1】:

    首先,警告不会伤害您。这只是一个提醒。
    另外,请确保您的语法正确。应该是:

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

    其次,了解代码在做什么可能很重要,因为您所拥有的工作有效,但读起来有点奇怪。

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

    然后稍后在您的代码中将所有键转换为字符串。您不妨只创建一个字符串迭代器并跳过演员表。

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

    【讨论】:

      【解决方案2】:

      JSONObject#Keys() 方法返回原始类型的 Iterator,并且您试图将其分配给 Iterator&lt;Object&gt; 的引用。参考JSONObject

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多