Maison  >  Article  >  Java  >  Introduction à la syntaxe des expressions lambda en Java8

Introduction à la syntaxe des expressions lambda en Java8

黄舟
黄舟original
2017-09-19 10:39:381529parcourir

Comme nous le savons tous, l'expression lambda est une nouvelle fonctionnalité fournie dans JAVA8. Elle prend en charge Java et peut également effectuer une simple « programmation fonctionnelle ». L'article suivant vous présente principalement les informations pertinentes sur la syntaxe des expressions lambda du didacticiel d'apprentissage Java8. Les amis qui en ont besoin peuvent s'y référer.

Préface

Je crois que tout le monde sait que les expressions lambda ont été introduites dans Java8 du point de vue du paramétrage comportemental, lors de l'utilisation de comportements comme. Les paramètres éliminent les déclarations de classe inutiles entourant la couche externe, rendant le code plus concis.

La syntaxe de l'expression lambda

l'expression lambda se compose de trois parties : les paramètres, -> et le corps de la fonction. En fait, le corps de la fonction peut être une expression ou une instruction. Les instructions doivent être entourées de {}, mais pas les expressions.

Exemple d'expression lambda


(List<String> list) -> list.isEmpty() // 布尔类型表达式
() -> new Apple(10) // 创建一个新对象
(Apple a) -> { System.out.println(a.getWeight()); } // 使用一个对象的属性
(String s) -> s.length() // 选择或提取一个对象的属性
(int a, int b) -> a * b // 组合两个参数
(Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()) // 比较两个对象

Paramétrage du comportement

Comme vous pouvez le constater, les expressions lambda se concentrent sur l'expression d'un comportement. En fait, avant java8, il existait déjà des exemples similaires de comportements de traitement en tant que paramètres :


// java.util.Comparator
public interface Comparator<T> {
 public int compare(T o1, T o2);
}


inventory.sort(new Comparator<Apple>() {
 public int compare(Apple a1, Apple a2){
 return a1.getWeight().compareTo(a2.getWeight());
 }
});

ci-dessus Dans le Par exemple, une interface Comparator est définie et la méthode de comparaison est définie. L'inventaire de type liste définit la méthode de tri, qui prend un Comparator comme paramètre. Lorsqu'il est utilisé, un objet Comparator anonyme ou non anonyme est généré, qui implémente la méthode de comparaison, spécifie le comportement de comparaison spécifique, puis transmet l'objet Comparator en tant que paramètre à la méthode de tri. La fonction réelle est de transmettre le comportement de comparaison en tant que paramètre à la méthode de tri. Cette idée et cette approche sont appelées « paramétrage du comportement ». Une méthode utilisée (telle que la méthode de tri) peut correspondre à plusieurs comportements. Lorsque le comportement doit être modifié, seul le code représentant le comportement doit être modifié, et l'utilisateur n'a pas besoin d'apporter de modifications, ce qui augmente la robustesse de. le code.

Classe interne anonyme

Comme dans l'exemple ci-dessus, un objet de type Comparator est directement nouveau sans définir de variable pour enregistrer la référence de l'objet. est appelé en utilisant des classes internes anonymes. Dans le cas de classes internes anonymes, la redondance du code est plus clairement visible puisque les méthodes ne peuvent pas être réutilisées. Parce que vous devez créer manuellement un nouvel objet à chaque fois que vous l'utilisez, et vous devez également écrire la signature de la méthode de comparaison, mais la seule chose qui est vraiment utile est le corps de la méthode de comparaison. En Java 8, ces codes peuvent être simplifiés à l'aide d'expressions lambda. Par exemple, l'utilisation de la méthode de tri ci-dessus peut être simplifiée à :


inventory.sort((Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight() ) );

Exemple de définition d'un fil de discussion :


Thread t = new Thread(new Runnable() {
 public void run(){
 System.out.println("Hello world");
 }
});

peut être simplifié en :


Thread t = new Thread(() -> System.out.println("Hello world"));

Exemple d'événement de clic dans Interface graphique :


Button button = new Button("Send");
button.setOnAction(new EventHandler<ActionEvent>() {
 public void handle(ActionEvent event) {
  label.setText("Sent!!");
 }
 });

peut être simplifié en :


Button button = new Button("Send");
button.setOnAction((ActionEvent event) -> label.setText("Sent!!"));

Comme on peut le constater, les expressions Lambda sont plus concises et permettent aux développeurs de se concentrer davantage sur le comportement défini lors de la lecture et de l'écriture du code.

Résumé

Cet article présente la syntaxe des expressions lambda, présente les scénarios d'utilisation des expressions lambda et utilise les avantages des expressions lambda. Dans le prochain article, nous expliquerons comment définir et utiliser les expressions lambda, ainsi que les spécifications particulières des expressions lambda en Java par rapport aux autres langages.

Résumé

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:
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