Junior — Middle
Da li lambda izraz može pristupiti promenljivoj deklarisanoj unutar metode u kojoj je definisana?
sobes.tech АИ
Одговор од АИ
Izraz lambda u Javi može pristupiti lokalnoj promenljivoj deklarisanoj u metodi samo ako je ta promenljiva efikasno finalna. To znači da nakon inicijalizacije, vrednost promenljive se ne menja.
Primer:
public void primer() {
int broj = 10; // efektivno finalna promenljiva
Runnable r = () -> System.out.println(broj);
r.run();
}
Ako pokušate da promenite broj nakon definisanja lambda izraza, kompajler će prikazati grešku.
Ovo ograničenje je povezano sa činjenicom da lambda može biti izvršena kasnije, i da bi se izbegli problemi sa promenljivim stanjem, Java zahteva da takve promenljive budu nepromenljive.