Middle
¿Qué son las expresiones lambda en Java y qué capacidades ofrecen?
sobes.tech AI
Respuesta de la IA
La expresión lambda en Java es una función anónima que no pertenece a ninguna clase y puede ser pasada como un objeto.
Sintaxis: (parámetros) -> { cuerpo }
Posibilidades:
- Interfaz funcional: La expresión lambda puede ser asignada a una variable de tipo interfaz funcional (interfaz con un método abstracto único).
// Interfaz funcional @FunctionalInterface interface MyInterface { void myMethod(); } // Uso de la expresión lambda MyInterface lambda = () -> System.out.println("¡Hola desde lambda!"); lambda.myMethod(); - Simplificación del código: Reemplazan las clases internas anónimas para implementar interfaces funcionales.
// Antes de Java 8 (clase anónima) Thread thread1 = new Thread(new Runnable() { @Override public void run() { System.out.println("Forma antigua"); } }); // Desde Java 8 (lambda) Thread thread2 = new Thread(() -> System.out.println("Forma lambda")); - Uso en Stream API: Se integran con Stream API para realizar operaciones sobre colecciones.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.stream() .filter(name -> name.startsWith("A")) // Expresión lambda .forEach(System.out::println); // Método referencia (expresión lambda) - Ejecución diferida: El código dentro de la expresión lambda se ejecuta solo cuando se llama al método funcional.
- Ámbito de variables: Las expresiones lambda pueden capturar variables del ámbito externo (las variables locales deben ser finales o efectivamente finales).
| Ventaja | Descripción |
|---|---|
| Brevedad del código | Reduce la "verbosidad" en comparación con clases anónimas. |
| Mejor legibilidad | El código se vuelve más conciso y comprensible. |
| Procesamiento paralelo | Es soportado por Stream API para operaciones paralelas. |