自從我最後一次使用Java以來已經有一段時間了,因爲我主要是C#開發人員。爲了回到遊戲中,我正在研究一個非常簡單的應用程序來觸及該語言的大多數關鍵功能。對於每個人都有一個getter
for (Player player : teamRed.getPlayers()) {
System.out.format("> %s\n", player.getName());
}
凡getPlayers()
定義如下:我碰到以下問題跑
public Iterable<Player> getPlayers() {
return Collections.unmodifiableList(this.players);
}
在過去的某個點上,無論是C#或Java有一個性能問題,當您在使用一個getter你對於每個像這樣的每個迭代都會執行的方法。我再也找不到任何東西了,所以我想知道:
Java是否曾經受到過這個問題,或者僅僅是C#而已?
就我個人而言,我覺得編譯器應該足夠聰明來正確優化它,並在迭代之前將getPlayers
的結果實際存儲在臨時變量中。但如果沒有,我沒有問題幫助編譯手:P
查找增強的for語句[在語言規範(https://docs.oracle.com/javase/specs/jls /se7/html/jls-14.html#jls-14.14.2),請查找「增強的for語句等價於表單的基本語句」。你會發現'getPlayers()'方法只按規範調用一次。 –
我不同意這是重複的。我記得它特別涉及到使用一種方法來檢索你想要迭代的列表。鏈接的問題使用直接訪問定義的數組。 –
我不記得Java從來沒有遇到過這樣的問題(因爲在1.2之前),而且我很難相信C#也會遭受這樣的基本監督。 – Kayaman