Una expresión lambda es un bloque corto de código que toma parámetros y devuelve un valor. Las expresiones lambda son similares a los métodos, pero no necesitan un nombre y se pueden implementar directamente en el cuerpo de un método.
Para entender este articulo te recomiendo que primero mires que es una interfaz funcional.
Vídeo explicativo
Sintaxis
La expresión lambda más simple contiene un solo parámetro y una expresión:
parámetro -> expresión
Para usar más de un parámetro, envuélvalos entre paréntesis:
(parámetro1, parámetro2) -> expresión
Las expresiones son limitadas. Deben devolver inmediatamente un valor y no pueden contener variables, asignaciones o declaraciones como si o para. Para realizar operaciones más complejas, se puede usar un bloque de código con llaves. Si la expresión lambda necesita devolver un valor, entonces el bloque de código debe tener una declaración de devolución.
(parámetro1, parámetro2) -> {bloque de código}
Usando expresiones Lambda
La expresiones lambda fueron creadas para simplicar las clases anónimas de un único método, por ello podemos ver la mayor diferencia comparandolas.
Supongamos que tenemos la siguiente interfaz funcional:
@FunctionalInterface
interface Ejecutor {
void ejecutar();
}
La forma de implementar la interfaz en una unica expresión, antes de JAVA 8 era usando clases anónimas y el resultado sería:
new Ejecutor(){
@Override
public void ejecutar(){}
}
Esto genera bastate código que y hace difícil de leer lo que realmente queremos implementar
Con JAVA 8 y usando Lambdas, podemos usar directamente
() -> {}