【问题标题】:Iterating using for-each使用 for-each 进行迭代
【发布时间】:2015-06-19 19:21:07
【问题描述】:
for (String str : m.keySet()) {//this works fine

    }

Set set = m.keySet();
for (String str : set) {//Type mismatch: cannot convert from element type Object to String

    }

两者都在做同样的事情,即迭代 Set 对象的 Keys(String) 而不是我在第二个代码中出现错误的原因。

【问题讨论】:

    标签: java dictionary collections iterator core


    【解决方案1】:

    您不应该使用原始的Set 类型,因为在这种情况下Set 的元素将被假定为Object 类型。

    相反,指定Set 持有的元素类型:

    Set<String> set = m.keySet();
    for (String str : set) {
    
    }
    

    【讨论】:

    • 在第一种情况下会发生什么,编译器如何知道我们正在使用哪种类型的 Set ?。
    • @JavedSolkar m.keySet() 可能返回一个Set&lt;String&gt;,这意味着m 的类型可能是Map&lt;String,Something&gt;
    【解决方案2】:

    因为 Set 不知道要使用哪种类型,所以它的抛出异常你必须使用 String 作为它的通用提要。像下面的sn-p

    Set<String> set = m.keySet();
    

    【讨论】:

      猜你喜欢
      • 2019-01-12
      • 1970-01-01
      • 1970-01-01
      • 2012-09-24
      • 2015-05-21
      • 2017-03-30
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      相关资源
      最近更新 更多