考慮上面的代碼示例。爲每個迴路鑄造
爲什麼編譯器抱怨中的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