【发布时间】:2020-07-26 02:09:08
【问题描述】:
我的代码
import java.util.*;
public class Test<T> implements Iterable<T> {
private List<T> persons = new ArrayList<T>();
public static void main(String[] args) {
Test<Test> ob = new Test<Test>();
ob.persons.add(ob);
for (Test t : ob.iterator()) {
System.out.println();
}
}
@Override
public Iterator<T> iterator() {
return persons.iterator();
}
}
错误:
Can only iterate over an array or an instance of java.lang.Iterable
两者有什么区别,为什么A不能合法而B可以工作?
for (Test t : ob.iterator()) { ----------------------A
System.out.println();
}
while (ob.iterator().hasNext()) { -------------------------- B
System.out.println();
}
想知道为什么底层代码不起作用? for 循环中是否发生了不同的事情? While 和 for 都提供了相同的迭代器状态进行迭代。
【问题讨论】: