Sobes.tech
Junior — Middle

Vai lambda izteiksme var piekļūt mainīgajam, kas ir deklarēts tajā metodē, kurā tā ir definēta?

sobes.tech AI

Atbilde no AI

Java lambda izteiksme var piekļūt vietējai mainīgajai, kas deklarēta metodā, tikai tad, ja šī mainīgā ir efektīvi finala. Tas nozīmē, ka pēc inicializācijas mainīgās vērtība nemainās.

Piemērs:

public void piemērs() {
    int skaitlis = 10; // efektīvi finala mainīgā
    Runnable r = () -> System.out.println(skaitlis);
    r.run();
}

Ja mēģināsiet mainīt skaitlis pēc lambda definīcijas, kompilators izmetīs kļūdu.

Šis ierobežojums ir saistīts ar to, ka lambda var tikt izpildīta vēlāk, un, lai izvairītos no maināmas stāvokļa problēmām, Java pieprasa, lai šādas mainīgās būtu nemainīgas.