2013-04-29 31 views
28
for (SomeListElement element : objectWithList.getList()) { ... } 

什麼是上面的代碼轉換爲?Java中的每個表達式都被翻譯成什麼?

我什麼最感興趣的是,如果叫getList()方法一次,或在每次迭代/元素?

+11

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Iterable.html – vemv 2013-04-29 09:05:56

+3

這是'的簡寫迭代器「解決方案。 – skuntsel 2013-04-29 09:07:33

+16

在問這個問題之前你做過什麼研究?語言規範似乎是一個顯而易見的地方,它給出了非常清晰的答案。 http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.14.2 – 2013-04-29 09:22:42

回答

42

它相當於

for(Iterator<SomeListElement> i = objectWithList.getList().iterator(); 
                   i.hasNext();) { 
    SomeListElement element = i.next(); 
    //access element here 
} 
25

它被翻譯下面的代碼片段,並objectWithList.getList()只調用一次。

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