Référence de Méthode en Java
Avant de passer à la pratique avec l'API Stream, il convient d'explorer certains raccourcis pour les expressions lambda. Les programmeurs appellent ces raccourcis des sucres syntaxiques.
Dans ce chapitre, nous aborderons les références de méthode et leur utilisation comme substituts aux expressions lambda.
Références de méthode
Examinons un exemple simple d'expression lambda et essayons de la remplacer par une référence de méthode :
Main.java
1234567891011package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> example = Arrays.asList("c", "o", "d", "e", "f", "i", "n", "i", "t", "y"); example.stream().map(e -> e.toUpperCase()).forEach(e -> System.out.print(e)); } }
Utiliser deux expressions lambda n'est pas très élégant, surtout lorsqu'il est possible de les raccourcir en références de méthode provenant des classes où elles sont déclarées.
La syntaxe sera la suivante :
Example.java
1(Class::Method)
Amélioration du code ci-dessus à l'aide des références de méthode :
Main.java
1234567891011package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> example = Arrays.asList("c", "o", "d", "e", "f", "i", "n", "i", "t", "y"); example.stream().map(String::toUpperCase).forEach(System.out::print); } }
La méthode toUpperCase fait partie de la classe String, d'où l'utilisation de la construction String::toUpperCase. À noter qu'en utilisant une référence de méthode, l'opération sera appliquée à chaque élément, il n'est donc pas nécessaire d'utiliser une expression lambda pour cela. L'affichage à l'écran a également été remplacé par System.out::print, qui constitue aussi une référence de méthode. Le programme appliquera la méthode System.out.print() à chaque élément.
D'ailleurs, IntelliJ IDEA suggère régulièrement de remplacer les expressions lambda par des références de méthode lorsque cela est possible, ce qui évite de devoir mémoriser la syntaxe à chaque fois.
De cette manière, IntelliJ IDEA vous suggérera d'améliorer votre code en utilisant des références de méthode.
Résumé
En résumé, les références de méthode n'ajoutent aucune charge programmatique. Elles n'optimisent pas le processus mais ne le compliquent pas non plus. Cette construction permet simplement de réduire légèrement le code écrit et d'améliorer la lisibilité. Le choix d'utiliser des expressions lambda ou des références de méthode vous appartient. Par exemple, je trouve plus clair d'écrire une expression lambda, puis IntelliJ la remplacera automatiquement par une référence de méthode.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you show more examples of method references?
What are the different types of method references in Java?
When should I use a method reference instead of a lambda expression?
Génial!
Completion taux amélioré à 4
Référence de Méthode en Java
Glissez pour afficher le menu
Avant de passer à la pratique avec l'API Stream, il convient d'explorer certains raccourcis pour les expressions lambda. Les programmeurs appellent ces raccourcis des sucres syntaxiques.
Dans ce chapitre, nous aborderons les références de méthode et leur utilisation comme substituts aux expressions lambda.
Références de méthode
Examinons un exemple simple d'expression lambda et essayons de la remplacer par une référence de méthode :
Main.java
1234567891011package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> example = Arrays.asList("c", "o", "d", "e", "f", "i", "n", "i", "t", "y"); example.stream().map(e -> e.toUpperCase()).forEach(e -> System.out.print(e)); } }
Utiliser deux expressions lambda n'est pas très élégant, surtout lorsqu'il est possible de les raccourcir en références de méthode provenant des classes où elles sont déclarées.
La syntaxe sera la suivante :
Example.java
1(Class::Method)
Amélioration du code ci-dessus à l'aide des références de méthode :
Main.java
1234567891011package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> example = Arrays.asList("c", "o", "d", "e", "f", "i", "n", "i", "t", "y"); example.stream().map(String::toUpperCase).forEach(System.out::print); } }
La méthode toUpperCase fait partie de la classe String, d'où l'utilisation de la construction String::toUpperCase. À noter qu'en utilisant une référence de méthode, l'opération sera appliquée à chaque élément, il n'est donc pas nécessaire d'utiliser une expression lambda pour cela. L'affichage à l'écran a également été remplacé par System.out::print, qui constitue aussi une référence de méthode. Le programme appliquera la méthode System.out.print() à chaque élément.
D'ailleurs, IntelliJ IDEA suggère régulièrement de remplacer les expressions lambda par des références de méthode lorsque cela est possible, ce qui évite de devoir mémoriser la syntaxe à chaque fois.
De cette manière, IntelliJ IDEA vous suggérera d'améliorer votre code en utilisant des références de méthode.
Résumé
En résumé, les références de méthode n'ajoutent aucune charge programmatique. Elles n'optimisent pas le processus mais ne le compliquent pas non plus. Cette construction permet simplement de réduire légèrement le code écrit et d'améliorer la lisibilité. Le choix d'utiliser des expressions lambda ou des références de méthode vous appartient. Par exemple, je trouve plus clair d'écrire une expression lambda, puis IntelliJ la remplacera automatiquement par une référence de méthode.
Merci pour vos commentaires !