Junior — Middle
Képes-e egy lambda kifejezés hozzáférni egy olyan változóhoz, amelyet a benne meghatározott módszeren belül deklaráltak?
sobes.tech MI
Válasz az MI-től
A Java-ban a lambda kifejezés csak akkor férhet hozzá egy helyi változóhoz, ha az a változó hatékonyan végleges. Ez azt jelenti, hogy az inicializálás után a változó értéke nem változik.
Példa:
public void pelda() {
int szam = 10; // hatékonyan végleges változó
Runnable r = () -> System.out.println(szam);
r.run();
}
Ha megpróbálod módosítani a szam változót a lambda definiálása után, a fordító hibát fog jelezni.
Ez a korlátozás abból adódik, hogy a lambda később végrehajtható, és a változtatható állapot problémáinak elkerülése érdekében a Java megköveteli, hogy ezek a változók immutábilisak legyenek.