Sobes.tech
Junior — Middle

Une expression lambda peut-elle accéder à une variable déclarée à l'intérieur de la méthode dans laquelle elle est définie?

sobes.tech IA

Réponse de l'IA

Une expression lambda en Java ne peut accéder à une variable locale déclarée dans la méthode que si cette variable est effectivement finale. Cela signifie qu'après l'initialisation, la valeur de la variable ne change pas.

Exemple :

public void exemple() {
    int nombre = 10; // variable effectivement finale
    Runnable r = () -> System.out.println(nombre);
    r.run();
}

Si vous essayez de modifier nombre après la définition de la lambda, le compilateur renverra une erreur.

Cette restriction est liée au fait que la lambda peut s'exécuter plus tard, et pour éviter des problèmes avec des états modifiables, Java exige que ces variables soient immuables.