Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Référence de Méthode en Java | Fonctionnalités et Techniques Avancées de Java
Structures de Données Java

bookRé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

Main.java

copy
1234567891011
package 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

Example.java

copy
1
(Class::Method)

Amélioration du code ci-dessus à l'aide des références de méthode :

Main.java

Main.java

copy
1234567891011
package 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.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 4

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

bookRé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

Main.java

copy
1234567891011
package 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

Example.java

copy
1
(Class::Method)

Amélioration du code ci-dessus à l'aide des références de méthode :

Main.java

Main.java

copy
1234567891011
package 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.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 4
some-alt