java中foreach为什么设计成通过Iterable访问容器,而不直接通过Iterator访问?
这样产生特定Iterable接口,满足foreach,就需要实现两层匿名内部类,Iterable和Iterator,为什么foreach不设计成通过Iterator访问容器?
不知道多设计一层Iterable是为了什么目的。请指教,谢谢。
class ReversibleArrayList<T> extends ArrayList<T>
{
public ReversibleArrayList(Collection<T> c) { super(c); }
public Iterable<T> reversed()
{
return new Iterable<T>()
{
public Iterator<T> iterator()
{
return new Iterator<T>()
{
int current = size() - 1;
public boolean hasNext() { return current > -1; }
public T next() { return get(current--); }
public void remove() { throw new UnsupportedOperationException(); }
};
}
};
}
}
通过两层匿名内部类,才得到迭代器。