Sobes.tech
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.