Las expresiones Lambda son una nueva e importante característica en Java SE 8. Esta proporciona una manera concisa y clara de representar una interfaz con un método en una sola expresión. Las expresiones Lambda también mejoran las librerías Collection. En forma adicional, las nuevas funcionalidades de concurrencia mejora la performance en entornos de varios procesadores.

Antecedentes

Clases Anónimas Internas

En Java, las clases anónimas internas proporcionan una manera de implementar clases que sólo ocurren una vez en la aplicación. Por ejemplo, en una aplicación Swing o JavaFX se requiere un número de manejadores de eventos para los eventos del teclado o el mouse. En lugar de escribir una clase de gestión de eventos independiente para cada evento, se puede tener algo como:

En otras palabras, una clase que implementa AcionListener es requerida por cada evento. Se crea la clase, que es necesaria, así el código es fácil de leer. El código no es elegante, considerando que se requieren varias líneas de código sólo para definir un método.

Interface Funcional

El código que define la interface ActionListener, luce similar a:

El ejemplo de la interface ActionListener es el ejemplo de una interfaz con sólo un método. En Java SE 8, una interfaz que sigue este patrón es denominada “Interface Funcional”.

Nota: Este tipo de interface, era previamente conocida como un tipo Método Simple Abstracto.

Utilizar una interface funcional con una clase anónima es un patrón común en Java. En forma adicional a la clase EventListener, interfaces como Runnable o Comparator son utilizados de una forma similar. Por lo tanto, una interface funcional es adecuada para ser reemplazada por una expresión del tipo Lambda.

Sintaxis de las Expresiones Lambda

Las expresiones Lambda permiten mejorar el uso de las clases anónimas internas convirtiendo cinco líneas de código en una simple sentencia. Esta sentencia soluciona el problema de tener un método con varias líneas al utilizar una clase interna.

Una expresión Lambda está compuesta de tres partes:

 Lista de argumentos Símbolo de flecha Cuerpo
 (int x, int y) -> x + y

El cuerpo puede ser una expresión simple o un bloque de sentencias. En una expresión simple, el cuerpo es simplemente evaluada y se devuelve el resultado. Si se utiliza un bloque de sentencias, el cuerpo es evaluado como el cuerpo de un método y la sentencia de retorno devuelven el control al que llamo al método anónimo. Las palabras reservadas break y continue no pueden ser utilizadas en el nivel superior, pero son permitidas en bucles. Si el cuerpo proporciona un resultado, cada ruta debe proporcionar un resultado o lanzar una excepción.

Ejemplos:

La primera toma dos enteros como argumentos, X – Y, y utiliza una sentencia para devolver X + Y. La segunda expresión no utiliza argumentos y retorna 42. La tercera expresión toma una cadena y utiliza la forma de bloque para imprimir la cadena en consola, no tiene devolución.

Con esto cubrimos lo básico de las expresiones Lambda.

Java 8: Las expresiones Lambda
Si te gusto, comparte ...Email this to someone
email
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin
Share on Google+
Google+
Etiquetado en:        

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Facebook
A %d blogueros les gusta esto: