Как вызвать пользовательскую лямбда-функцию в Java - PullRequest
0 голосов
/ 26 февраля 2020

В в этом уроке я видел пример пользовательской лямбда-функции.

Function<String, String> toLowerCase = (var input) -> input.toLowerCase();

Что мне интересно, как я могу вызвать эту функцию? Я попробовал это в jshell, но не могу. Я могу создать прекрасную функцию:

Любые идеи?

jshell> Function<String, String> toLowerCase = (var input) -> input.toLowerCase();
toLowerCase ==> $Lambda$16/0x00000008000b3040@3e6fa38a

, но не могу ее выполнить:

jshell> String hi = "UPPER";
jshell> String high;
high ==> null

jshell> toLowerCase(high,low);
|  Error:
|  cannot find symbol
|    symbol:   method toLowerCase(java.lang.String,java.lang.String)
|  toLowerCase(high,low);
|  ^---------^

jshell> 

Ответы [ 2 ]

2 голосов
/ 26 февраля 2020

Вам необходимо apply Функция, например:

toLowerCase.apply(high)

enter image description here

или присвоить ее значение другой переменной low, как в :

jshell> String low = toLowerCase.apply(high)
low ==> "ggggg"


Предложение : Используйте jshell автозаполнение (с клавишей табуляции на macOS), чтобы выяснить, что все методы применимы для вызова объявленных переменных.

enter image description here

0 голосов
/ 26 февраля 2020

Вы создали экземпляр типа Function функционального интерфейса, который имеет метод Function.apply(). Следовательно, вы должны использовать его так же, как в классе Java:

toLowerCase.apply(high);

Что в toLowerCase(high,low); заставило вас думать, что low есть? Как и в Java, вы должны работать с определенными методами и переменными в доступной области видимости.

...