Когда метод Java принимает Function<? super T, ? extends U>
, тогда можно предоставить ссылки на методы в синтаксисе, как показано ниже: MyClass::myMethod
.Цепные функции лямбда
Однако мне интересно, есть ли способ связать несколько вызовов методов. Вот пример, иллюстрирующий случай.
// on a specific object, without lambda
myString.trim().toUpperCase()
Мне интересно, есть ли синтаксис для перевода этого выражения на лямбда. Я надеюсь, что есть что-то вроде следующего:
// something like: (which doesn't work)
String::trim::toUpperCase
В качестве альтернативы, существует ли класс утилиты для объединения функций?
// example: (which does not exist)
FunctionUtil.chain(String::trim, String::toUpperCase);
Как насчет ['Function.andThen'] (https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html#andThen-java.util.function.Function -)? –
Каноническое решение заключается в _stop, используя метод reference_, и просто напишите 'myString -> myString.trim(). ToUpperCase()'. –
@ LouisWasserman отличное обходное решение. Но я действительно надеялся на синтаксическую сладость. – bvdb