[JAVA] Punkt 43: Bevorzugen Sie Methodenverweise auf Lambdas
43. Verwenden Sie Methodenreferenzen anstelle von Lambda-Ausdrücken
- Grundsätzlich sollten Methodenreferenzen ausgewählt werden, da Methodenreferenzen präziser geschrieben werden können als Lambda-Ausdrücke.
- In einigen Fällen ist der Lambda-Ausdruck prägnanter. Dies ist häufig der Fall, wenn Methoden in derselben Klasse verwendet werden.
//Methodenreferenz
service.execute(GoshThisClassNameIsHumongous::action);
//Lambda-Stil
service.execute(() -> action());
- Viele Methodenreferenzen sind statische Methodenreferenzen, es gibt jedoch vier weitere Muster.
- Gebundene Referenzen (ich weiß nicht warum ...) sind Methodenreferenzen, die das zu empfangende Objekt identifizieren.
- Ungebundene Referenz (ich verstehe nicht ...) identifiziert das Objekt, das beim Anwenden eines Funktionsobjekts empfangen werden soll (** Ich verstehe nicht, was es bedeutet **). Wird häufig in Stream-Maps und Filtern verwendet.
- Klassen- und Array-Konstruktoren können wie in der folgenden Tabelle gezeigt sein.
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] |