Mam następujący kod:Zaawansowana pętla Java: co jest (nie) oceniane w nagłówku pętli?
for (Attribute thisAttribute : factor.getAttributes()) {
// blabla
}
gdzie factor.getAttributes()
powraca List<Attribute>
.
Prawdopodobnie istnieje tylko jedno początkowe połączenie z factor.getAttributes()
, a następnie rozpoczyna się przejście. Jednak nie rozumiem, dlaczego jest tylko jedno połączenie. Gdybym miał dołączyć wywołanie funkcji do nagłówka regularnej pętli for()
, sądzę, że byłby on oceniany w każdej iteracji. W związku z tym, w jaki sposób i dlaczego zaawansowana pętla jest inna?
Dla każdej pętli jest bit inny dla normalnej pętli for. Musisz zrozumieć, że dla każdej pętli otrzymujemy kolekcję i używamy iteratora, aby ją pętli. – StackFlowed
Skąd JVM wie, że mam zamiar pobrać kolekcję tylko raz na początku? – James
Zależy od części głowicy pętli, o której mówisz, o tym, jak często coś jest wywoływane. W klasycznej pętli 'for (int i = getStartInt(); i
ajp15243