Sobes.tech
Junior

Cosa sono le espressioni lambda in Java?

sobes.tech AI

Risposta dell'AI

L'espressione lambda in Java è una funzione anonima (senza nome) che implementa un'interfaccia funzionale.

Caratteristiche principali:

  • Non hanno nome.
  • Possono avere parametri.
  • Il corpo può consistere in un'unica espressione o in un blocco di istruzioni.
  • Il tipo di ritorno non viene specificato (viene dedotto automaticamente).
  • Sono necessarie per la programmazione funzionale e il lavoro con gli stream (Streams API).

Sintassi:

// Senza parametri
() -> { // corpo }

// Con un parametro (il tipo può essere omesso)
param -> espressione

// Con più parametri (il tipo può essere omesso, sono necessarie parentesi)
(param1, param2) -> { // corpo }

Esempio di utilizzo:

// Interfaccia funzionale (integrata)
import java.util.function.Consumer;

// Implementazione con lambda
Consumer<String> stampante = s -> System.out.println(s);
stampante.accept("Ciao mondo!");

// Uso in un metodo che accetta un'interfaccia funzionale
import java.util.Arrays;
import java.util.List;

List<Integer> numeri = Arrays.asList(1, 2, 3, 4, 5);
numeri.forEach(n -> System.out.println(n)); // forEach accetta un Consumer

Vantaggi:

  • Codice più conciso.
  • Migliore leggibilità (nei casi semplici).
  • Possibilità di usare la programmazione funzionale.
  • Semplificazione del lavoro con le collezioni e il multithreading.

Limitazioni:

  • Lambda annidate o lunghe possono essere difficili da capire.
  • Non hanno stato (non possono avere campi di istanza).