Sobes.tech
Middle

Cosa sono le espressioni lambda in Java e quali funzionalità offrono?

sobes.tech AI

Risposta dell'AI

L'espressione lambda in Java è una funzione anonima che non appartiene a nessuna classe e può essere passata come oggetto.

Sintassi: (parametri) -> { corpo }

Opportunità:

  1. Interfaccia funzionale: L'espressione lambda può essere assegnata a una variabile di tipo interfaccia funzionale (interfaccia con un solo metodo astratto).
    // Interfaccia funzionale  
    @FunctionalInterface  
    interface MyInterface {  
        void myMethod();  
    }  
    
    // Uso dell'espressione lambda  
    MyInterface lambda = () -> System.out.println("Ciao da lambda!");  
    lambda.myMethod();  
    
  2. Semplificazione del codice: Sostituiscono le classi interne anonime per implementare interfacce funzionali.
    // Prima di Java 8 (classe anonima)  
    Thread thread1 = new Thread(new Runnable() {  
        @Override  
        public void run() {  
            System.out.println("Vecchio modo");  
        }  
    });  
    
    // Da Java 8 (lambda)  
    Thread thread2 = new Thread(() -> System.out.println("Modo lambda"));  
    
  3. Utilizzo in Stream API: Si integrano con l'API Stream per eseguire operazioni sulle collezioni.
    List<String> names = Arrays.asList("Alice", "Bob", "Charlie");  
    names.stream()  
         .filter(name -> name.startsWith("A")) // Espressione lambda  
         .forEach(System.out::println);        // Riferimento metodo (espressione lambda)  
    
  4. Esecuzione differita: Il codice all’interno dell’espressione lambda viene eseguito solo quando si chiama il metodo funzionale.
  5. Ambito delle variabili: Le espressioni lambda possono catturare variabili dall’ambiente esterno (le variabili locali devono essere finali o effettivamente finali).
Vantaggio Descrizione
Sintesi del codice Riduce la "verbosità" rispetto alle classi anonime.
Migliore leggibilità Il codice diventa più conciso e comprensibile.
Elaborazione parallela Supportata dall’API Stream per operazioni parallele.