Lambda Expression et la Variable de Capture

S'il vous plaît expliquez-moi comment une expression lambda pouvez utiliser et modifier les variables d'instance de sa classe englobante, mais ne peut utiliser les variables de son cadre englobant. (Sauf si c'est définitif ou final?)

Ma question de base est la façon dont les variables d'instance d'une classe sont modifiables à partir de l'intérieur d'un lambda et les variables locales ne sont pas, dans le contexte de la portée.

Depuis lambda est effectivement un anonyme intérieur de la classe, c'est un double possible de Pourquoi ne sont définitives que les variables accessibles dans la classe anonyme?
Cela est vrai pour Java 8, mais autant que je sache, il n'est pas spécifié, ce qui pourrait être changé dans les futures versions de Java.
seulement this est capturé. tous l'accès à une variable d'instance dans le corps de lambda est fait par le biais de this.field, donc vous pouvez écrire à trop.
Je pense qu'il est spécifié et qu'il ne changera pas dans l'avenir. voir ces commentaires.
Alors que je suis sûr que j'ai lu un post de blog ou quelque chose de tout à l'heure, qui a déclaré Lambdas au moment où sont compilées les Classes internes Anonymes, mais que cela pourrait changer pour des raisons de performances dans l'avenir, je ne suis pas en mesure de trouver cet article. Alors peut-être que vous avez raison - même si elle n'a pas été précisé, à l'instant où son effet de la même.

OriginalL'auteur Abu Bakkar Siddique | 2015-08-28