Pytania otagowane jako method-reference

2
Comparator.reversed () nie kompiluje się przy użyciu lambda
Mam listę z niektórymi obiektami użytkownika i próbuję posortować listę, ale działa tylko przy użyciu odwołania do metody, z wyrażeniem lambda kompilator wyświetla błąd: 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 error Błąd: com\java8\collectionapi\CollectionTest.java:35: error: cannot find symbol …

3
Czy buforowanie odwołań do metod to dobry pomysł w Javie 8?
Rozważ, że mam kod podobny do następującego: class Foo { Y func(X x) {...} void doSomethingWithAFunc(Function<X,Y> f){...} void hotFunction(){ doSomethingWithAFunc(this::func); } } Załóżmy, że hotFunctionjest to wywoływane bardzo często. Czy byłoby wskazane buforowanie this::func, może w ten sposób: class Foo { Function<X,Y> f = this::func; ... void hotFunction(){ doSomethingWithAFunc(f); } …

4
Dlaczego typ zwracanej wartości lambda nie jest sprawdzany podczas kompilacji?
Użyte odwołanie do metody ma typ zwracany Integer. Jednak niezgodność Stringjest dozwolona w poniższym przykładzie. Jak naprawić withdeklarację metody, aby uzyskać bezpieczny typ referencyjny metody bez ręcznego rzutowania? import java.util.function.Function; public class MinimalExample { static public class Builder<T> { final Class<T> clazz; Builder(Class<T> clazz) { this.clazz = clazz; } static …
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.