每次为Iterables调用for循环的"条件"吗?

gsi*_*011 5 java for-loop iterable conditional-statements

可以说我有以下代码:

for (Object obj : Node.getIterable()) {
    //Do something to object here
}
Run Code Online (Sandbox Code Playgroud)

和Node.getIterable()返回一个iterable.是每次调用getIterable()函数还是仅在for循环启动时调用?我应该把它改成:

Iterable<Object> iterable = new Iterable<Object>();
//populate iterable with objects
for (Object obj : iterable) {
    //Do something
}
Run Code Online (Sandbox Code Playgroud)

Ósc*_*pez 11

Java语言规范详细说明了foreach语句的功能.有关更多信息,请参阅"14.14.2增强的for语句"(http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.14.2).但简而言之,实际上语言确实可以保证您迭代的表达式只会被评估一次.