1. Accédez aux variables locales
Vous pouvez accéder aux variables locales finales en dehors des expressions lambda :
final int num = 1; Converter<Integer, String> stringConverter = (from) -> String.valueOf(from + num); stringConverter.convert(2); // 3
Mais c'est différent de l'anonyme objets Ce qui est intéressant, c'est que la variable num ne doit pas nécessairement être finale. Tenter de modifier la valeur de num dans une expression lambda n'est pas non plus autorisé.
2. Accéder aux variables membres et aux variables statiques
Contrairement aux variables locales, nous pouvons accéder aux variables membres dans les expressions lambda Ou lire et écrire droits sur les variables statiques. Ce comportement d'accès est très typique pour les objets anonymes.
class Lambda4 { static int outerStaticNum; int outerNum; void testScopes() { Converter<Integer, String> stringConverter1 = (from) -> { outerNum = 23; return String.valueOf(from); }; Converter<Integer, String> stringConverter2 = (from) -> { outerStaticNum = 72; return String.valueOf(from); }; } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!