[JAVA] Rubrique 43: Préférez les références de méthode aux lambdas
43. Utilisez des références de méthode plutôt que des expressions lambda
- Fondamentalement, les références de méthode doivent être sélectionnées car les références de méthode peuvent être écrites de manière plus concise que les expressions lambda.
- Dans certains cas, l'expression lambda est plus concise. C'est souvent le cas lors de l'utilisation de méthodes de la même classe.
//Référence de la méthode
service.execute(GoshThisClassNameIsHumongous::action);
//Style Lambda
service.execute(() -> action());
- De nombreuses références de méthodes sont des références de méthodes statiques, mais il existe quatre autres modèles.
- Les références liées (je ne sais pas pourquoi ...) sont des références de méthode qui identifient l'objet à recevoir.
- La référence UnBound (je ne comprends pas ...) identifie l'objet à recevoir lors de l'application d'un objet fonction (** Je ne comprends pas ce que cela signifie **). Souvent utilisé dans les cartes de flux et les filtres.
- Les constructeurs de classes et de tableaux peuvent être comme indiqué dans le tableau ci-dessous.
Method Ref Type |
Example |
Lambda Equivalent |
Static |
Integer::parseInt |
str -> Integer.parseInt(str) |
Bound |
Instant.now()::isAfter |
Instant then = Instant.now(); t -> then.isAfter(t) |
Unbound |
String::toLowerCase |
str -> str.toLowerCase() |
Class Constructor |
TreeMap<K,V>::new |
() -> new TreeMap<K,V> |
Array Constructor |
int[]::new |
len -> new int[len] |