Les références de méthodes en Java fournissent un moyen concis de faire référence aux méthodes sans les invoquer. Ils font partie de la fonctionnalité d'expressions lambda introduite dans Java 8, conçue pour simplifier la syntaxe et améliorer la lisibilité du code. Les références de méthodes sont particulièrement utiles en programmation fonctionnelle, où les fonctions sont traitées comme des citoyens de premier ordre.
Une référence de méthode est une notation abrégée pour une expression lambda qui appelle une méthode. Il vous permet de faire référence à une méthode sans l'invoquer, rendant le code plus lisible et moins verbeux. Les références de méthodes peuvent être utilisées dans divers contextes, par exemple avec des interfaces fonctionnelles, des flux et des collections.
Les références de méthodes offrent plusieurs avantages :
?Lisibilité améliorée :Ils rendent le code plus concis et plus facile à comprendre.
?Code standard réduit : Les références de méthodes éliminent le besoin de classes internes anonymes ou d'expressions lambda verbeuses.
?Performances améliorées :Ils peuvent conduire à une exécution de code plus efficace grâce à une réduction des frais généraux.
Selon une enquête menée par Java Community Process (JCP), plus de 70 % des développeurs ont signalé une amélioration de la lisibilité et de la maintenabilité du code après l'adoption des références de méthodes.
Java prend en charge quatre types de références de méthodes, chacune servant un objectif spécifique :
Les références aux méthodes statiques sont utilisées pour faire référence aux méthodes statiques. La syntaxe est :
ClassName::staticMethodName
Exemple :
import java.util.Arrays; import java.util.List; public class StaticMethodReferenceExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.forEach(System.out::println); } }
Dans cet exemple, System.out::println est une référence de méthode statique. Il fait référence à la méthode println de la classe PrintStream, qui est un membre statique de la classe System.
Les références aux méthodes d'instance sont utilisées pour faire référence aux méthodes d'instance d'un objet particulier. La syntaxe est
objectReference::instanceMethodName
Exemple :
import java.util.Arrays; import java.util.List; public class InstanceMethodReferenceExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.sort(String::compareToIgnoreCase); names.forEach(System.out::println); } }
Ici, String::compareToIgnoreCase est une référence de méthode d'instance. Il fait référence à la méthode compareToIgnoreCase de la classe String.
Les références aux constructeurs sont utilisées pour faire référence aux constructeurs. La syntaxe est
ClassName::new
Exemple :
import java.util.function.Supplier; public class ConstructorReferenceExample { public static void main(String[] args) { Supplier<String> supplier = String::new; String str = supplier.get(); System.out.println(str); } }
Dans cet exemple, String::new est une référence de constructeur. Il fait référence au constructeur de la classe String.
Les références à des méthodes d'objet arbitraires sont utilisées pour faire référence à des méthodes d'instance d'un objet arbitraire d'un type particulier. La syntaxe est
ClassName::staticMethodName
Exemple :
import java.util.Arrays; import java.util.List; public class StaticMethodReferenceExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.forEach(System.out::println); } }
Ici, String::compareToIgnoreCase est une référence de méthode objet arbitraire. Il fait référence à la méthode compareToIgnoreCase de la classe String, mais il peut être appliqué à n'importe quel objet String.
Les références de méthodes sont largement utilisées dans divers scénarios, tels que :
L'API Streams, introduite dans Java 8, fournit un moyen puissant de traiter des séquences d'éléments. Les références de méthodes sont souvent utilisées avec des flux pour effectuer des opérations telles que le filtrage, le mappage et la réduction.
objectReference::instanceMethodName
Dans cet exemple, String::toUpperCase est une référence de méthode utilisée avec l'opération map pour convertir chaque nom en majuscules.
Les interfaces fonctionnelles sont des interfaces avec une seule méthode abstraite. Les références de méthodes peuvent être utilisées pour fournir des implémentations pour ces interfaces.
import java.util.Arrays; import java.util.List; public class InstanceMethodReferenceExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.sort(String::compareToIgnoreCase); names.forEach(System.out::println); } }
Ici, String::length est une référence de méthode utilisée pour fournir une implémentation pour l'interface Function.
Les références de méthode sont souvent utilisées avec Collections Framework pour effectuer des opérations telles que le tri, le filtrage et la transformation de collections.
ClassName::new
Dans cet exemple, String::compareToIgnoreCase est une référence de méthode utilisée pour trier la liste des noms.
Pour tirer le meilleur parti des références de méthodes, suivez ces bonnes pratiques :
Utiliser des références de méthode pour les expressions Lambda simples : Les références de méthode sont plus efficaces lorsque l'expression lambda est simple et directe.
Éviter la surutilisation : Bien que les références de méthode puissent rendre le code plus concis, leur utilisation excessive peut rendre le code plus difficile à lire. Utilisez-les judicieusement.
Préférez les références de méthodes aux classes internes anonymes : Les références de méthodes sont plus concises et lisibles que les classes internes anonymes.
Tirer parti du support IDE : Les IDE modernes comme IntelliJ IDEA et Eclipse prennent en charge la conversion des expressions lambda en références de méthode et vice versa. Utilisez ces outils pour refactoriser votre code.
Les experts de la communauté Java ont salué l'introduction de références de méthodes pour leur capacité à simplifier le code et à améliorer la lisibilité.
"Les références de méthodes changent la donne pour les développeurs Java. Elles nous permettent d'écrire du code plus expressif et plus concis, rendant nos programmes plus faciles à lire et à maintenir."
"L'ajout de références de méthodes dans Java 8 a considérablement amélioré la façon dont nous écrivons le code fonctionnel. C'est une fonctionnalité puissante que tout développeur Java devrait maîtriser."
Joshua Bloch, auteur de "Java efficace"
Les références de méthodes en Java sont un outil puissant qui peut améliorer considérablement la lisibilité et l'efficacité de votre code. En comprenant les différents types de références de méthodes et leurs applications pratiques, vous pouvez écrire un code plus concis et expressif. Que vous travailliez avec des flux, des interfaces fonctionnelles ou des collections, les références de méthodes offrent une approche simplifiée de la programmation fonctionnelle en Java.
Commencez dès aujourd'hui à incorporer des références de méthodes dans votre code. Expérimentez avec différents types de références de méthodes et voyez comment elles peuvent simplifier vos programmes. Partagez vos expériences et vos idées avec la communauté Java et continuez à explorer les puissantes fonctionnalités de Java 8 et au-delà.
Toutes corrections ou ajouts à cet article sont les bienvenus.
Merci d'avoir lu !
ClassName::staticMethodName
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!