Рассмотрим приведенный выше пример кода.
Почему компилятор жалуется на «несовместимые типы» в цикле 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()) {
}
}
}