Vorteile von Referenzen für Methoden
Prägnanz:Verweise auf Methoden sind prägnanter als Lambdas.
Beispiel: Erhöhen Sie den Wert in einer Karte mithilfe von merge:
Lambda:(Anzahl, Inkr) -> zählen + erhöhen
Referenz für Methode: Integer::sum
Boilerplate-Reduktion
Entfernung nutzloser Parameter:Parameter wie count und incr werden eliminiert.
Beispiel:
map.merge(key, 1, Integer::sum);
Nach dem Login kopieren
Effiziente Nutzung von Referenzen für Methoden
- Nützliche Dokumentation in Lambdas:In manchen Fällen können Parameternamen in Lambdas eine nützliche Dokumentation liefern.
- Konvertierung von Lambdas in Methoden:Wenn ein Lambda zu komplex ist, extrahieren Sie den Code in eine separate Methode und verwenden Sie den Verweis auf diese Methode.
IDEs und Referenzen für Methoden
- IDE-Vorschläge:IDEs schlagen oft vor, Lambdas durch Verweise auf Methoden zu ersetzen.
- Annahme von Vorschlägen:Akzeptieren Sie Vorschläge im Allgemeinen, bewerten Sie sie jedoch von Fall zu Fall.
Ausnahmen und Überlegungen
- Prägnantere Lambdas:Manchmal sind Lambdas prägnanter als Methodenverweise.
- Beispiel mit Klasse:
- Referenz für Methode:GoshThisClassNameIsHumongous::action
- Lambda:() -> action()
- Identitätsfunktion:Function.identity() vs. x -> x
Arten von Referenzen für Methoden
- Statisch: Integer::parseInt (lambda: str -> Integer.parseInt(str))
- Limitiert:Instant.now()::isAfter (lambda: t -> Instant.now().isAfter(t))
- Unbegrenzt:String::toLowerCase (lambda: str -> str.toLowerCase())
- Klassenkonstruktor:TreeMap::new (lambda: () -> new TreeMap)
- Array-Konstruktor:int[]::new (lambda: len -> new int[len])
Fazit
Bevorzugung von Methodenreferenzen:Verwenden Sie Methodenreferenzen, wenn diese kürzer und klarer als Lambdas sind.
Verwendung von Lambdas:Lambdas bevorzugen, wenn sie prägnanter sind oder eine bessere Dokumentation bieten.
Das obige ist der detaillierte Inhalt vonElement Verweise auf Methoden gegenüber Lambdas bevorzugen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!