Java 使用Iterable在ArrayList上迭代?

Java 使用Iterable在ArrayList上迭代?,java,foreach,Java,Foreach,我们都知道这段代码: ArrayList<String> str1 = new ArrayList<String>(); for(String str: str1) { // code goes here } ArrayList str1=新的ArrayList(); 用于(字符串str:str1){ //代码在这里 } 这个增强的for循环使用Iterable而不是迭代器来遍历。但是我没有看到ArrayList扩展了Iterable。有人能告诉我为什么会

我们都知道这段代码:

ArrayList<String> str1 = new ArrayList<String>();
for(String str: str1) {
    // code goes here
} 
ArrayList str1=新的ArrayList();
用于(字符串str:str1){
//代码在这里
} 

这个增强的for循环使用Iterable而不是
迭代器来遍历。但是我没有看到
ArrayList
扩展了
Iterable
。有人能告诉我为什么会发生这种情况吗?

ArrayList
扩展了实现了
Iterable

文档()在它实现的列表中清楚地显示了
Interable
。它是“语法糖”,所以即使对于像数组这样的东西,它不需要绑在一个特殊的结构上你在哪里找不到它?Javadoc和javap都表示它扩展了Iterable。ArrayList还实现了List,它扩展了Iterable。