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.