Как передать функцию через параметры с помощью обобщений - PullRequest
0 голосов
/ 17 января 2019

С учетом следующего кода:

static <U,V> List<V> map(Iterable<U> l, Function<U,V> f) {
    return null;
}

Мне нужно передать arraylist в первом параметре и хэш-функцию во втором, который принимает строку и выводит тип int.

Я пытаюсь выполнить следующее, но получаю следующее сообщение об ошибке.

map(names,<String,Integer> hashCode());

map(names,hash());

Сообщение об ошибке: не применимо для аргументов int

Нужно передать хеш-функцию, чтобы я мог использовать эту функцию внутри метода.

1 Ответ

0 голосов
/ 17 января 2019

Здесь:

hashCode()

не является функцией ! Это просто вызов метода. Вы бы предпочли лямбду, что-то вроде:

x -> x.hashCode()

или, как вы, вероятно, используете хеш-код текущего объекта:

this::hashCode

Но на самом деле это зависит от объекта, для которого вы намереваетесь вызвать метод hashCode. И, конечно же, есть также разница в интерфейсе, который вы намереваетесь «использовать», будь то Функция или Поставщик (этот пример второго справочного метода будет, например, поставщиком).

...