我有一個關於這個的foreach問題:Java foreach是否創建副本?
for(Element e : nullProof(setOfElements)){
// do stuff
}
假設我定義的函數,nullProof,返回一個非空集(因爲我聽說你不應該爲空進入一個增強的for循環。這是真的):
private Set<Element> nullProof(Set<Element> s){
return s == null ? Collections.<Element> emptySet() : s;
}
我的問題是...是安全調用的foreach內nullProof功能?具體來說,就是下面的標題等同於:
for(Element e : setOfElements){ //assuming setOfElements != null
我想知道,如果有人可以點我的一些Java標準說,這是定義的行爲。
此外,有人可以解釋當這個foreach被調用時,「幕後」實際發生了什麼嗎?
比方說setOfElements已尺寸6.通過setOfElements每次迭代,並在JVM查找setOfElements 6不同的時間,或者它創建一個集的副本,並參考副本?我試圖理解這種行爲。謝謝您的幫助!
查看http://stackoverflow.com/questions/85190/how-does-the-java-for-each-loop-work – keuleJ 2015-02-05 18:54:19
你是什麼意思?「擡頭?「 – 2015-02-05 19:03:01