import java.util.Iterator;
public class Main {
public static class ShouldBeIterable<T> implements Iterable<Integer> {
@Override
public Iterator<Integer> iterator() {
return null;
}
}
public static void main(String[] args) {
ShouldBeIterable it = new ShouldBeIterable();
for (Integer i : it) {
System.out.println("Bla");
}
}
}
上面的代码编译时出现以下错误:
Error:(17, 26) java: incompatible types: java.lang.Object cannot be converted to java.lang.Integer
但是,如果我将 it 生成几乎任何类型(甚至是Object),该错误就会消失。
为什么?它是如何工作的?在不使用泛型的情况下如何解决此问题?