【问题标题】:Unchecked conversion未经检查的转换
【发布时间】:2013-12-21 03:04:34
【问题描述】:

我不想取消警告。还有其他方法可以处理此警告吗?

"Iterator 类型的表达式需要未经检查的转换才能符合 Iterator"

Iterator<String> it = schemaJSON.getJSONObject("body").keys();

【问题讨论】:

    标签: java android json iterator


    【解决方案1】:

    您可以在这里找到答案:Type Safety warning with JSON Iterator

    Iterator<?> it = schemaJSON.getJSONObject("body").keys();
    
    while(it.hasNext())
    {
         String next = (String) it.next();
         ...
    

    【讨论】:

      【解决方案2】:

      如果您只想删除警告,

      "Iterator 类型的表达式需要未经检查的转换才能符合 Iterator"

      然后这样做,

      Iterator<String> it =  (Iterator<String>)schemaJSON.getJSONObject("body").keys();
      

      但这会导致新警告,但您的旧警告已被删除。

      Type safety: Unchecked cast from Iterator to Iterator&lt;String&gt;

      为了删除所有警告,

      Iterator<?> it = schemaJSON.getJSONObject("body").keys();    
      while(it.hasNext())
      {
          String nextElement = (String) it.next();
      

      【讨论】:

      【解决方案3】:

      我认为keys() 返回一个Iterator 实例,而不是Iterator&lt;String&gt;,因此您要么离开String,要么只接受警告;-)

      【讨论】:

        【解决方案4】:

        您无法避免此警告,因为 android JSONObject#keys() 返回一个“原始”Iterator。但是您可以使用 @SuppressWarnings 注释来抑制警告:

        @SuppressWarnings("unchecked")
        Iterator<String> it = schemaJSON.getJSONObject("body").keys();
        

        【讨论】:

        • 所有副本的最佳答案。我来这里是为了找出为什么会有警告,而不仅仅是如何抑制它。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-04
        相关资源
        最近更新 更多