Предположим, у меня есть несколько List
различных объектов, и я хочу сопоставить эти объекты значению int
(например, возвращая длину String
), чтобы я мог выполнять операции в Stream
, Поэтому я создаю метод, такой как:
public <T> int foo(List<T> list, ToIntFunction<T> toInt) {
return list.stream().mapToInt(toInt).max().orElse(Integer.MIN_VALUE);
}
(Примечание: max
может быть другой операцией терминала)
Тогда я хочу передать ему ToIntFunction
. Я могу сделать:
ToIntFunction<String> length = e -> e.length();
int bar = foo(list, length);
Однако мне нужно было бы выписывать ToIntFunction
каждый раз, когда я вызывал метод.
Есть ли способ просто сделать что-то вроде:
foo(list, new ToIntFunction<String>(e -> e.length()) );
//Obviously ToIntFunction is an interface and can't be instantiated
Или нужно сделать это в две строки с именованной переменной?