Maison > Java > javaDidacticiel > Les expressions Lambda dans Java 8 remplacent-elles les classes anonymes ?

Les expressions Lambda dans Java 8 remplacent-elles les classes anonymes ?

Susan Sarandon
Libérer: 2024-11-10 03:18:02
original
806 Les gens l'ont consulté

Do Lambda Expressions in Java 8 Replace Anonymous Classes?

Expressions lambda en Java8 : un remplacement des classes anonymes ?

Avec l'introduction des expressions lambda en Java8, la question se pose : avoir des expressions anonymes les classes deviennent obsolètes ?

Expressions Lambda : Un Solution

Les expressions Lambda fournissent une syntaxe compacte et facile à lire pour définir des interfaces à méthode unique. Comme l'illustre la méthode de tri de la Collection, les expressions lambda éliminent le besoin d'implémentations anonymes de Comparator :

Collections.sort(personList, new Comparator<Person>() {
  public int compare(Person p1, Person p2){
    return p1.firstName.compareTo(p2.firstName);
  }
});
Copier après la connexion

devient :

Collections.sort(personList, (Person p1, Person p2) -> p1.firstName.compareTo(p2.firstName));
Copier après la connexion

Quand les expressions Lambda échouent

Malgré leur simplicité, les expressions lambda ont des limites. Ils ne peuvent être utilisés qu'avec des interfaces à méthode unique et ne peuvent pas fournir d'état ni définir de méthodes supplémentaires. Cela signifie que les classes anonymes restent nécessaires dans les situations où :

  • Une classe est requise pour l'héritage ou pour fournir une instance concrète d'une interface.
  • L'état doit être maintenu ou partagé entre appels de méthodes multiples.
  • Des méthodes supplémentaires sont requises au-delà de l'interface à méthode unique.

Avantages des expressions Lambda

Dans leur portée, les expressions lambda offrent des avantages par rapport aux classes anonymes :

  • Concision : Les expressions lambda sont nettement plus courtes et plus faciles à lire .
  • Immuabilité : Les lambdas ne peuvent pas modifier leur état environnant, fournissant un fil sécurité.
  • Portée lexicale : Contrairement aux classes anonymes, les lambdas utilisent la portée lexicale, garantissant que les variables de l'environnement englobant sont accessibles.

Conclusion

Les expressions Lambda n'ont pas remplacé les classes anonymes en Java8. Bien qu'elles offrent un raccourci pratique pour les fonctions à méthode unique, les classes anonymes restent essentielles dans les cas où un état, un héritage ou des méthodes supplémentaires sont requis. Les deux fonctionnalités coexistent pour fournir des solutions flexibles et appropriées pour différents scénarios de programmation Java.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal