Maison  >  Article  >  Java  >  expression lambda en Java

expression lambda en Java

WBOY
WBOYoriginal
2023-06-09 10:17:091479parcourir

Expression lambda en Java

Avec la sortie de Java 8, l'expression lambda est devenue l'un des sujets les plus préoccupants et discutés parmi les développeurs Java. Les expressions Lambda peuvent simplifier les méthodes d'écriture fastidieuses des programmeurs Java, tout en améliorant la lisibilité et la maintenabilité du programme. Dans cet article, nous examinerons en profondeur les expressions lambda en Java et comment elles offrent une expérience de programmation plus simple et plus intuitive dans le code Java.

Qu'est-ce qu'une expression Lambda ?

Une expression Lambda est une fonction anonyme qui peut être passée en paramètre à une méthode ou renvoyée par une méthode. Les expressions Lambda en Java ont été principalement introduites pour implémenter une programmation fonctionnelle afin de simplifier l'écriture de classes internes anonymes. En Java, l'écriture de classes internes anonymes est verbeuse et peu intuitive dans certains cas. L'introduction d'expressions lambda rend l'écriture de code plus simple et plus facile à lire.

La syntaxe de l'expression Lambda

L'expression lambda en Java se compose principalement de symboles fléchés, d'une liste de paramètres et d'un corps de fonction. Voici la syntaxe de base de l'expression lambda :

(paramètre1, paramètre2, ..., paramètreN) -> {corps de fonction}

La syntaxe ci-dessus est expliquée comme suit :

  • paramètre1, paramètre2, ... , paramètreN : signifie Les paramètres de l'expression lambda.
  • -> : symbole de flèche, utilisez le symbole de flèche pour séparer la liste de paramètres et le corps de la méthode.
  • {function body} : représente le corps de la méthode de l'expression lambda.

L'exemple de code est le suivant :

// Exemple d'expression lambda
classe publique LambdaExample {

public static void main(String[] args) {
    // 传递 lambda 表达式给 Thread 类
    Thread t1 = new Thread(() -> System.out.println("Lambda 表达式"));
    t1.start();
}

}

Dans le code ci-dessus, expression lambda () -> System.out.println("Expression Lambda" ) C'est une fonction anonyme qui sera passée en paramètre à la classe Thread en Java.

Inférence de type pour les expressions Lambda

Dans certains cas, le compilateur Java peut automatiquement déduire le type d'une expression lambda via le contexte. Par exemple, lorsque vous transmettez une expression lambda en tant que paramètre à une interface fonctionnelle, le compilateur déduit automatiquement le type de l'expression lambda. L'exemple de code est le suivant :

// Exemple d'inférence de type d'expression Lambda
classe publique LambdaTypeInferenceExample {

public static void main(String[] args) {
    // 在 lambda 表达式作为参数时可以自动推断类型
    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
    numbers.forEach((Integer value) -> System.out.println(value));
}

}

Dans le code ci-dessus, le type d'expression Lambda (valeur entière) -> valeur) peut être automatiquement déduite sans spécifier explicitement le type.

Portée variable des expressions Lambda

Contrairement aux classes internes anonymes, les expressions lambda peuvent accéder aux variables locales de la méthode dans laquelle elles se trouvent. Ces variables locales sont appelées les « variables libres » de l'expression lambda. Dans une expression lambda, les variables libres sont accessibles, mais les variables libres doivent être implicitement finales ou de facto finales. Voici un exemple de code :

// Exemple de variable gratuite d'expression Lambda
classe publique LambdaFreeVariableExample {

public static void main(String[] args) {
    String message = "Hello";
    Runnable runnable = () -> {
        System.out.println(message);
    };
    runnable.run();
}

}

Dans le code ci-dessus, expression lambda() -> La variable message est supprimée car la variable de message est implicitement finale.

Expressions Lambda et API Stream

Java 8 introduit également une nouvelle API Stream qui est étroitement liée aux expressions lambda. L'API Stream fournit un moyen d'exploiter les collections, permettant aux développeurs de traiter les données de collection plus facilement. De nombreuses méthodes de l'API Stream acceptent les expressions lambda comme paramètres. Voici un exemple de code :

// Exemple d'API Stream
classe publique StreamExample {

public static void main(String[] args) {
    List<String> list = Arrays.asList("Java", "Spring", "Hibernate", "Struts");
    long count = list.stream()
                    .filter(s -> s.startsWith("S"))
                    .count();
    System.out.println(count);
}

}

Dans le code ci-dessus, l'expression lambda s -> () Les paramètres sont transmis à l'API Stream pour filtrer les chaînes commençant par S.

Résumé

L'expression lambda en Java est une fonctionnalité très importante, qui fournit aux programmeurs Java une méthode de codage concise, efficace, facile à lire et à maintenir. De plus, les expressions lambda sont également étroitement liées à d'autres nouvelles fonctionnalités telles que l'API Stream, offrant un moyen plus pratique et plus efficace pour le développement Java. Si vous êtes un développeur Java, vous devez activement maîtriser et utiliser les expressions lambda, ce qui vous apportera une grande aide dans votre travail de développement.

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