Junior — Middle
Môže lambda výraz získať prístup k premennej deklarovanej v rámci metódy, v ktorej je definovaná?
sobes.tech AI
Odpoveď od AI
Výraz lambda v Jave môže získať prístup k lokálnej premennej deklarovanej v metóde iba v prípade, že je táto premená efektívne finalná. To znamená, že po inicializácii sa jej hodnota nemení.
Príklad:
public void priklad() {
int cislo = 10; // efektívne finalná premená
Runnable r = () -> System.out.println(cislo);
r.run();
}
Ak sa pokúsite zmeniť cislo po definovaní lambda, kompilátor vypíše chybu.
Toto obmedzenie súvisí s tým, že lambda môže byť spustená neskôr, a aby sa predišlo problémom s meniteľným stavom, Java vyžaduje, aby tieto premenne boli nemenné.