Leí un artículo sobre Joel On Software sobre la idea de usar funciones de orden superior para simplificar en gran medida el código mediante el uso del mapa y reducir. Mencionó que esto era difícil de hacer en Java. El artículo: http://www.joelonsoftware.com/items/2006/08/01.html¿Cómo puedo escribir una función de orden superior como map o reducir en java?
El ejemplo del artículo de más abajo, los bucles a través de una matriz, y utiliza la función fn que se ha pasado como un argumento en cada elemento de la matriz:
function map(fn, a)
{
for (i = 0; i < a.length; i++)
{
a[i] = fn(a[i]);
}
}
Esto se invoca similares a la continuación en la práctica:
map(function(x){return x*2;}, a);
map(alert, a);
Idealmente me gustaría escribir una función de mapa para trabajar en las matrices, o colecciones de cualquier tipo, si es posible.
He estado buscando en Internet, y estoy teniendo dificultades para encontrar recursos sobre el tema. En primer lugar, ¿son posibles las funciones anónimas en Java? ¿Es esto posible de otra manera? ¿Estará disponible en una versión futura de java? Si es posible, ¿cómo puedo hacerlo?
Imagino que si esto no es posible en Java existe algún tipo de 'patrón'/técnica que la gente usa para lograr el mismo efecto, ya que imagino que las funciones anónimas son una herramienta muy poderosa en el mundo del software. la única pregunta similar que pude encontrar fue esta: Java generics - implementing higher order functions like map y no tiene absolutamente ningún sentido para mí.
De hecho, parece que si/cuando Java finalmente obtiene expresiones lambda, serán convertibles en una clase anónima. – hammar