Sobes.tech
Junior

¿Qué permite hacer las expresiones lambda en Java?

sobes.tech AI

Respuesta de la IA

Las expresiones lambda en Java, introducidas en Java 8, permiten:

  • Implementar interfaces con un solo método abstracto (interfaces funcionales): Este es su propósito principal. Las lambdas proporcionan una sintaxis concisa para crear instancias de interfaces funcionales.
// Antes de Java 8
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        System.out.println("¡Hola pre-Java 8!");
    }
};

// Con Java 8
Runnable lambdaRunnable = () -> System.out.println("¡Hola Java 8!");
  • Pasar comportamientos (funciones) como argumentos a métodos: Esto amplía las capacidades de la programación funcional en Java. Los métodos pueden aceptar expresiones lambda como parámetros.
// Ejemplo de uso de la API Stream con lambda
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.stream()
     .filter(name -> name.startsWith("A")) // Lambda como argumento de filter
     .forEach(System.out::println);       // Lambda (Referencia a método) como argumento de forEach
  • Usar la API Stream: Las expresiones lambda son fundamentales para trabajar con la nueva API Stream, permitiendo procesar colecciones de datos de manera eficiente.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sumOfEven = numbers.stream()
                      .filter(n -> n % 2 == 0)
                      .mapToInt(Integer::intValue)
                      .sum();
  • Simplificar la implementación de clases internas anónimas para interfaces funcionales: Las lambdas reemplazan la sintaxis verbose de las clases anónimas en este contexto.

  • Mejorar la legibilidad del código: Para operaciones simples, las lambdas hacen que el código sea más conciso y comprensible.

  • Permitir la ejecución diferida del código: La expresión lambda describe una acción que se ejecutará más tarde, cuando sea llamada.

Las lambdas también tienen acceso a variables locales del ámbito externo (si son efectivamente finales).

En general, las expresiones lambda hacen que Java sea más expresivo y adecuado para el estilo de programación funcional.