Как я могу написать функцию более высокого порядка, такую ​​как map, или уменьшить в java?

Я прочитал статью о Joel On Software об идее использования функций высшего порядка для значительного упрощения кода за счет использования map и reduce. Он упомянул, что это сложно сделать на Java. Статья: http://www.joelonsoftware.com/items/2006/08/01. html

В примере из статьи ниже выполняется цикл по массиву и используется функция fn, переданная в качестве аргумента для каждого элемента в массиве:

function map(fn, a)
{
    for (i = 0; i < a.length; i++)
    {
        a[i] = fn(a[i]);
    }
}

На практике это будет вызываться аналогично приведенному ниже:

map( function(x){return x*2;}, a );
map( alert, a );

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

Я искал в Интернете, и мне трудно найти ресурсы по этой теме. Во-первых, возможны ли анонимные функции в java? Можно ли это сделать по-другому? Будет ли он доступен в будущей версии java? Если возможно, как я могу это сделать?

Я полагаю, что если это невозможно в Java, существует какой-то «шаблон» / метод, который люди используют для достижения того же эффекта, поскольку я полагаю, что анонимные функции - очень мощные инструмент в мире программного обеспечения. единственный подобный вопрос, который мне удалось найти, заключался в следующем: Дженерики Java - реализация функций высшего порядка, таких как map , и для меня это не имеет абсолютно никакого смысла.

5
задан Community 23 May 2017 в 11:51
поделиться