Я хочу заменить лямбда-выражение ссылкой на метод в приведенном ниже примере:
public class Example {
public static void main(String[] args) {
List<String> words = Arrays.asList("toto.", "titi.", "other");
//lambda expression in the filter (predicate)
words.stream().filter(s -> s.endsWith(".")).forEach(System.out::println);
}
}
Я хочу написать что-то вроде этого:
words.stream().filter(s::endsWith(".")).forEach(System.out::println);
возможно ли преобразовать любое лямбда-выражение в ссылку на метод.
::
, если аргумент находится в вызове экземпляра. Вы можете заменитьs -> "hi".equals(s)
на"hi"::equals
, но неs -> s.equals("hi")
- person Peter Lawrey   schedule 24.10.2016MethodHandle
может перемешивать аргументы, но результат больше не является дескриптором прямого метода, аLambdaMetaFactory
поддерживает только дескрипторы прямого метода. Частично применяемые функции, с другой стороны, будут работать, поскольку они не перемешивают аргументы, а LMF поддерживает привязку параметров слева направо. Так что для.endsWith(".")
, где должен быть привязан правильный параметр, нет шансов ... - person Holger   schedule 24.10.2016String::endsWith
плюс некоторый гипотетический способ привязки аргумента"."
. В чем преимущество передs -> s.endsWith(".")
? - person Holger   schedule 24.10.2016