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) ,而不是我在第二个代码中遇到错误的原因。
您不应使用原始
Set
类型,因为在这种情况下,Set
的元素将被假定为 Object
类型。
相反,指定
Set
所持有的元素类型:
Set<String> set = m.keySet();
for (String str : set) {
}
因为 Set 不知道要使用哪种类型,所以它抛出异常,你必须使用
String
作为它的通用提要。就像下面的片段
Set<String> set = m.keySet();