Ich habe nur immer verwendet Java 6 und jetzt bin Aufholjagd zu erfahren, was in Java 8. Neues ich diesen Artikel las hier: http://www.drdobbs.com/jvm/lambda-expressions-in-java-8/240166764?pgno=2Können BiFunction-Referenzen an Methoden übergeben werden, die eine funktionale Schnittstelle erwarten?
Und er sagt:
Die Java-API definiert mehrere generische funktionale Schnittstellen im Paket java.util.function. Eine der Schnittstellen, bifunktionellen, beschreibt Funktionen mit Parametertypen T und U und Rückgabetyp R. Sie können unsere String-Vergleich Lambda in einer Variable dieses Typ speichern:
bifunktionellen comp = (erste, zweite) -> Integer.compare (first.length(), second.length());
Das hilft Ihnen jedoch nicht beim Sortieren. Dort ist ist keine Arrays.sort Methode, die eine BiFunction will. Wenn Sie zuvor eine funktionale Programmiersprache verwendet haben, können Sie dies merkwürdig finden. Aber für Java-Programmierer, es ist ziemlich natürlich. Eine Schnittstelle wie Comparator hat einen bestimmten Zweck, nicht nur eine Methode mit gegebenen Parameter und Rückgabetypen. Java 8 behält diesen Geschmack. Wenn Sie wollen, dass etwas mit Lambda-Ausdrücken macht, wollen Sie immer noch den Zweck des Ausdrucks im Hinterkopf behalten und eine spezifische funktionale Schnittstelle dafür haben.
Allerdings, wenn ich diesen Thread sehen: How do you assign a lambda to a variable in Java 8?
Die Antworten auf die Frage legen nahe, es zu tun genau das, was der zitierte Absatz sagt man nicht tun kann.
Also, ist die Information in dem Artikel falsch, oder bin ich hier etwas falsch?
Danke!
Sie könnten einfach das gleiche Lambda einem 'Comparator' zuweisen und es in einem Sortieraufruf verwenden ... –