Sobes.tech
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:

  1. 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();  
    
  2. 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"));  
    
  3. 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)  
    
  4. Ejecución diferida: El código dentro de la expresión lambda se ejecuta solo cuando se llama al método funcional.
  5. Á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.