Sobes.tech
Middle

Ce sunt expresiile lambda în Java și ce funcționalități oferă?

sobes.tech AI

Răspuns de la AI

Expresia lambda în Java este o funcție anonimă care nu aparține niciunei clase și poate fi transmisă ca obiect.

Sintaxă: (parametri) -> { corp }

Posibilități:

  1. Interfață funcțională: Expresia lambda poate fi atribuită unei variabile de tip interfață funcțională (interfață cu o singură metodă abstractă).
    // Interfață funcțională  
    @FunctionalInterface  
    interface MyInterface {  
        void myMethod();  
    }  
    
    // Utilizarea expresiei lambda  
    MyInterface lambda = () -> System.out.println("Salut din lambda!");  
    lambda.myMethod();  
    
  2. Simplificarea codului: Înlocuiesc clasele interne anonime pentru implementarea interfețelor funcționale.
    // Înainte de Java 8 (clasă anonimă)  
    Thread thread1 = new Thread(new Runnable() {  
        @Override  
        public void run() {  
            System.out.println("Modul vechi");  
        }  
    });  
    
    // Începând cu Java 8 (lambda)  
    Thread thread2 = new Thread(() -> System.out.println("Modul lambda"));  
    
  3. Utilizare în API-ul Stream: Se integrează cu API-ul Stream pentru efectuarea de operații asupra colecțiilor.
    List<String> names = Arrays.asList("Alice", "Bob", "Charlie");  
    names.stream()  
         .filter(name -> name.startsWith("A")) // Expresie lambda  
         .forEach(System.out::println);        // Referință metodă (expresie lambda)  
    
  4. Executarea întârziată: Codul din interiorul expresiei lambda se execută doar la apelarea metodei funcționale.
  5. Domeniul variabilelor: Expresiile lambda pot captura variabile din mediul exterior (variabilele locale trebuie să fie finale sau efectiv finale).
Avantaj Descriere
Concizie în cod Reduce "verbositatea" comparativ cu clasele anonime.
Îmbunătățirea lizibilității Codul devine mai concis și mai ușor de înțeles.
Procesare paralelă Este suportată de API-ul Stream pentru operații paralele.