Expresiones Lambda en Java 8

Introducción

En lenguajes orientados a objetos, la clave te todo es el objeto, pero sucede lo contrario en los lenguajes de programación funcionales donde son éstas las donde recaen toda la importancia, en ellas se pueden pasar alrededor como si fueran variables esto se ve en Haskell, javascript y otros lenguajes funcionales. Los lenguajes funcionales tienen otras construcciones que no están fácilmente disponibles en los lenguajes orientados a objetos como son las expresiones lambda.

Expresión lambda no era parte de las versiones anteriores de Java, se intentaba simular con normalmente a través del uso de la clase anónima que no era nada elegante. Con la introducción de Lambda Expression en Java 8 podremos hacer que Java se comporte también como un lenguaje funcional. Por lo tanto, la introducción de expresiones lambda en Java 8 en una forma de puente con el lenguaje de programación funcional.

Las expresiones lambda, que normalmente las conocemos como “la función anónima”, es una función sin nombre. Es un atajo que le permite declarar un método en el que se va a utilizar, sin especificar el nombre del método, el tipo de cambio ni el acceso. Le permite tratar el código como los datos y usar funciones como argumentos de método.

¿Cual es la importancia de las Expresiones Lambda?

Con la introducción de las expresiones lambda en java se puedan aprovechar los beneficios del lenguaje funcional dentro de un lenguaje orientado a objetos. Las expresiones lambda proporcionan un medio para escribir códigos claros y concisos con el uso de expresiones.

Ejemplos

Sintaxis

(Argumento) -> (cuerpo)
– Donde puede haber cero o más argumentos, El token “flecha” (->) es el operador lambda java y (cuerpo) contiene una o más línea de códigos que se ejecutan cuando se llama la función.

Ejemplo de Uso

(Int a, int b) -> a * b

Los argumentos de la expresión son los valores enteros A y B que sería utilizado por la expresión para devolver la salida de la operación de multiplicación.

(Persona p) -> {p.getAge return ();}

Se toma una persona objeto como argumento, mientras que la expresión devuelve el valor del método getAge () llamado en el objeto.

 

Antes de Java 8, los códigos para manejar “EventListener” se escribían normalmente con la clase anónima

btnOk.setOnAction (newEventHandler () {

@ Override
public void handle (ActionEvent e) {
/ / código manejador del evento del botón
}
});

Con las expresiones lambda, el código del EventListener se puede hacer mucho más elegante, con menos líneas de código, veamos cómo:

btnOk.setOnAction (e -> {
/ / códigos para manejar eventos de botón se escribirían aquí
});

Genial ¿no?, veamos otro ejemplo se puede ver en el código de hebras donde también usábamos una clase anónima para usarlas, pero ahora puede ser sustituido por el de una expresión lambda, echemos un vistazo:

new thread (
() -> System.out.println (“Esta es una ejecución distinta”)

.) Start ();

Además, las expresiones lambda se puede utilizar en colecciones donde puede ser usado para simplificar algunas operaciones tales como el filtrado, clasificación e incluso la consulta de elementos de una colección.

ArrayList arrayList = new ArrayList ();
for (int i = 1; i {System.out.println (i);});

A partir de los códigos anteriores, es evidente que las expresiones lambda minimizan las líneas de código escritas y da mucho más potencia a Java.
Espero que os haya gustado este pequeño inciso en las novedades de Java 8, para más información podéis visitar:

http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html

¡Hasta la próxima!

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s