Maison >Java >javaDidacticiel >Quelle est l'expression lambda équivalente à la référence de la méthode System.out::println ?

Quelle est l'expression lambda équivalente à la référence de la méthode System.out::println ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-04 06:26:02909parcourir

What is the lambda expression equivalent to the System.out::println method reference?

Équivalence de la référence de méthode System.out::println dans l'expression Lambda

En Java, la référence de méthode System.out::println permet pour une manière concise de faire référence à la méthode System.out.println(). Il évalue System.out et l'attribue à une variable.

Question :

Quelle est l'expression lambda correspondante pour System.out::println qui fournit le même comportement ?

Réponse :

Une expression lambda équivalente exacte serait be:

num -> {
    PrintStream p = Objects.requireNonNull(System.out);
    p.println(num);
}

Cette expression lambda capture la référence à System.out dans la variable p avant d'exécuter la méthode println. Cela empêche toute modification apportée à System.out d'affecter le comportement de l'expression lambda.

Différence par rapport à l'expression lambda simple :

Une expression lambda plus simple comme num -> System.out.println(num) évaluerait System.out à chaque fois qu'il est appelé, le rendant susceptible aux modifications de System.out pendant l'exécution du lambda.

Utilisation :

L'expression lambda équivalente peut être utilisée de la même manière que System.out::println, telle que :

List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
numbers.forEach(num -> {
    PrintStream p = Objects.requireNonNull(System.out);
    p.println(num);
});

This le code imprimera les numéros de la liste sur la console.

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