关于foreach:什么是Java中的每个表达式翻译成?

What are for-each expressions in Java translated to?

本问题已经有最佳答案,请猛点这里访问。
1
 for ( SomeListElement element : objectWithList.getList() ) { ... }

上面的代码片段是什么?

我最感兴趣的是如果getList()方法调用一次,还是每次迭代/元素?


它相当于

1
2
3
4
5
for(Iterator<SomeListElement> i = objectWithList.getList().iterator();
                                                              i.hasNext(); ) {
  SomeListElement element = i.next();
  //access element here
}

它被转换为下面的代码片段,objectWithList.getList()只被调用一次。

1
2
3
for (Iterator i = objectWithList.getList().iterator(); i.hasNext();) {
    SomeListElement e = (SomeListElement) i.next();
}