Java ne prend pas en charge les vraies fermetures, mais elles peuvent être simulées via des classes internes anonymes. Les fermetures dans les classes internes anonymes peuvent accéder aux variables externes même si la fonction qui les a créées est terminée, mais les variables externes ne peuvent pas être déclarées ou modifiées en dehors de la fonction, et les expressions lambda ne peuvent pas capturer directement les variables externes.
Une fermeture est une fonction qui a accès aux variables définies dans la fonction qui l'a créée. La fermeture peut toujours accéder à ces variables même si la fonction qui l'a créée a fini de s'exécuter.
Java ne prend pas en charge les vraies fermetures. Cependant, en utilisant des classes internes anonymes, nous pouvons simuler le comportement des fermetures.
Considérez l'extrait de code suivant :
public class LambdaClosure { public static void main(String[] args) { int x = 10; Runnable closure = () -> System.out.println(x); // 调用闭包 closure.run(); } }
Dans ce cas :
x
est une variable locale, qui est définie dans le main()
méthode milieu. x
是一个局部变量,它被定义在 main()
方法中。Runnable
被用来创建闭包。closure
访问了外部变量 x
,即使 main()
Runnable
est utilisée pour créer des fermetures. closure
accède à la variable externe x
même si la méthode main()
est terminée. Les variables externes peuvent être capturées dans des classes internes anonymes.
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!