2011-10-07 26 views
5

可以說我有下面的代碼:是在for循環每次Iterables所謂的「條件」?

for (Object obj : Node.getIterable()) { 
    //Do something to object here 
} 

和Node.getIterable()返回一個迭代。是否每次都調用getIterable()函數,或者只有在啓動for循環時才調用getIterable()函數?我應該將其更改爲:

Iterable<Object> iterable = new Iterable<Object>(); 
//populate iterable with objects 
for (Object obj : iterable) { 
    //Do something 
} 
+4

簡單的方法來找出...只需將Node.getIterable包裝在一個方法中,該方法也可以將某些東西寫入控制檯(或者您喜歡的文件)。然後你就可以看到它被調用了多少次。我的賭注 - 它只會被調用一次,但我沒有足夠的信心給出明確的答案。 –

回答

3

都能跟得上它沒有。它將從getIterable()收到的可迭代項保存在內存中,並使用該引用。檢查快速的方法就是把一個破發點在for聲明和調試自己的方式到JDK。你會知道的。