Maison Java javaDidacticiel Comparez et contrastez entre les fermetures Java et les fonctions anonymes

Comparez et contrastez entre les fermetures Java et les fonctions anonymes

May 04, 2024 am 09:21 AM
闭包 匿名函数 作用域

Les fermetures et les fonctions anonymes en Java sont des classes internes anonymes, mais les fermetures peuvent sauvegarder l'état au-delà de leur environnement de création, tandis que les fonctions anonymes n'effectuent qu'une seule opération et sont limitées à leur environnement de création.

Java 闭包与匿名函数之间的比较和对照

Fermetures et fonctions anonymes en Java

Présentation

Les fermetures et fonctions anonymes en Java sont des classes internes anonymes qui permettent d'accéder aux variables dans l'environnement dans lequel elles sont créées, mais entre les deux il y a Différences subtiles.

Fermetures

  • Une fermeture est une classe interne anonyme avec des variables privées et un état enregistrable
  • Une fermeture peut contenir des variables de l'environnement dans lequel elle est créée et y fournir un accès persistant
  • Fermetures en tant qu'objets Propriétés ou méthodes sont renvoyées ou transmises, prolongeant ainsi la durée de vie de l'environnement dans lequel elles sont créées

Fonctions anonymes

  • Les fonctions anonymes sont des classes internes anonymes qui n'effectuent des opérations qu'une seule fois
  • Les fonctions anonymes sont essentiellement des fonctions "à usage unique" , Parce qu'il n'a pas d'état
  • Les fonctions anonymes sont souvent utilisées comme expressions Lambda pour écrire du code de manière plus concise

Tableaux de comparaison

Caractéristiques Fermetures Fonctions anonymes
État État de sauvegarde, peut être modifié Aucun état
portée au-delà de son environnement de création, tant que la référence existe limitée à son environnement de création
instantiation utiliser un nouvel opérateur exprimé via Lambda Formule
Objectif Initialisation paresseuse, gestion de l'état Gestion de tâches ponctuelles, souci de simplification

Cas pratique

Exemple de fermeture

// 用于延迟初始化的闭包
public static Supplier<String> createLazySupplier() {
    String name = "Alice";
    return () -> name;
}
Copier après la connexion

An exemple de fonction anonyme

// 用于排序的匿名函数
Arrays.sort(array, (a, b) -> Integer.compare(a, b));
Copier après la connexion

Conclusion

Les fermetures et les fonctions anonymes sont deux outils utiles en Java qui permettent la création de code flexible et efficace. Le choix de celui à utiliser dépend des fonctionnalités requises pour un cas d'utilisation spécifique.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Utilisation de la structure typedef en langage C Utilisation de la structure typedef en langage C May 09, 2024 am 10:15 AM

Utilisation de la structure typedef en langage C

Comment résoudre la variable attendue en Java Comment résoudre la variable attendue en Java May 07, 2024 am 02:48 AM

Comment résoudre la variable attendue en Java

Avantages et inconvénients des fermetures en js Avantages et inconvénients des fermetures en js May 10, 2024 am 04:39 AM

Avantages et inconvénients des fermetures en js

Que signifie inclure en C++ Que signifie inclure en C++ May 09, 2024 am 01:45 AM

Que signifie inclure en C++

Comment implémenter la fermeture dans une expression C++ Lambda ? Comment implémenter la fermeture dans une expression C++ Lambda ? Jun 01, 2024 pm 05:50 PM

Comment implémenter la fermeture dans une expression C++ Lambda ?

Pointeurs intelligents C++ : une analyse complète de leur cycle de vie Pointeurs intelligents C++ : une analyse complète de leur cycle de vie May 09, 2024 am 11:06 AM

Pointeurs intelligents C++ : une analyse complète de leur cycle de vie

Il existe plusieurs situations dans lesquelles cela indique en js Il existe plusieurs situations dans lesquelles cela indique en js May 06, 2024 pm 02:03 PM

Il existe plusieurs situations dans lesquelles cela indique en js

Les définitions de fonctions et les appels en C++ peuvent-ils être imbriqués ? Les définitions de fonctions et les appels en C++ peuvent-ils être imbriqués ? May 06, 2024 pm 06:36 PM

Les définitions de fonctions et les appels en C++ peuvent-ils être imbriqués ?

See all articles