Рассмотрим приведенный выше пример кода.Кастинг для каждой петли
Почему компилятор жалуется на «несовместимых типов» в обмен на каждой петле и говорит:
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()) {
}
}
}
Вы уверены, что ваш настоящий класс точно такой же, как в примере? У вашей «Карты» есть параметры типа, или это сырая «Карта»? Если у него нет параметров типа, тогда 'keySet' вернет коллекцию' Object' вместо коллекции типа ключа. – Jesper
Покажите нам реальный код. Каков тип объекта, который вы повторяете в своем реальном foreach? – penartur
Чтобы понять, почему ваш код не работает, нам действительно нужно увидеть код, который не работает, а не какое-то приближение. – NPE