考虑上面的代码示例。为每个回路铸造
为什么编译器抱怨中的for-each循环“不兼容的类型”,并说:
B.java:10: incompatible types
found : java.lang.Object
required: java.lang.String
for (String k : a.m.keySet()) {
如果我剥类型参数的所有编译罚款。
public class A<T> {
Map<String,Field> m;
void foo() {
new B(this).foo();
}
}
class B {
A a;
B(A a) {
this.a = a;
}
void foo() {
for (String k : a.m.keySet()) {
}
}
}
您确定*您的真实课程与示例中的完全相同吗?你的'Map'是否有类型参数,还是原始的'Map'?如果它没有类型参数,那么'keySet'将返回一个'Object'集合,而不是集合的键类型。 – Jesper 2012-02-23 15:22:12
向我们展示真实的代码。你在真正的foreach中迭代的对象的类型是什么? – penartur 2012-02-23 15:22:47
为了弄清楚为什么你的代码不起作用,我们真的需要看到不起作用的代码,而不是一些近似。 – NPE 2012-02-23 15:22:48