5

私が次のコードを持っているとしましょう:

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

Node.getIterable()はiterableを返します。getIterable()関数は毎回呼び出されますか、それともforループが開始されたときにのみ呼び出されますか?次のように変更する必要があります:

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

2 に答える 2

11

Java言語仕様では、foreachステートメントの機能について詳しく説明しています。詳細については、「14.14.2拡張forステートメント」(http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.14.2)を参照してください。しかし、要するに、実際には、言語は、反復している式が1回だけ評価されることを保証します。

于 2011-10-07T19:50:19.680 に答える
3

いいえ、そうではありません。から受け取った反復可能なアイテムgetIterable()をメモリに保持し、その参照を使用します。for確認する簡単な方法は、ステートメントにブレークポイントを設定し、JDKへの方法をデバッグすることです。あなたは知るようになるでしょう。

于 2011-10-07T19:56:27.130 に答える