Als «method-reference» getaggte Fragen

2
Comparator.reversed () wird nicht mit Lambda kompiliert
Ich habe eine Liste mit einigen Benutzerobjekten und ich versuche, die Liste zu sortieren, aber es funktioniert nur unter Verwendung der Methodenreferenz. Mit dem Lambda-Ausdruck gibt der Compiler einen Fehler aus: List<User> userList = Arrays.asList(u1, u2, u3); userList.sort(Comparator.comparing(u -> u.getName())); // works userList.sort(Comparator.comparing(User::getName).reversed()); // works userList.sort(Comparator.comparing(u -> u.getName()).reversed()); // Compiler …

3
Ist das Zwischenspeichern von Methodenreferenzen in Java 8 eine gute Idee?
Bedenken Sie, ich habe Code wie den folgenden: class Foo { Y func(X x) {...} void doSomethingWithAFunc(Function<X,Y> f){...} void hotFunction(){ doSomethingWithAFunc(this::func); } } Angenommen, das hotFunctionwird sehr oft genannt. Wäre es dann ratsam, zwischenzuspeichern this::func, vielleicht so: class Foo { Function<X,Y> f = this::func; ... void hotFunction(){ doSomethingWithAFunc(f); } } …

4
Warum wird der Lambda-Rückgabetyp zur Kompilierungszeit nicht überprüft?
Die verwendete Methodenreferenz hat den Rückgabetyp Integer. Im Stringfolgenden Beispiel ist jedoch eine Inkompatibilität zulässig. Wie kann die Methodendeklaration withkorrigiert werden, um den Methodenreferenztyp ohne manuelles Casting sicher zu machen? import java.util.function.Function; public class MinimalExample { static public class Builder<T> { final Class<T> clazz; Builder(Class<T> clazz) { this.clazz = clazz; …
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.