Sobes.tech
Middle

Šta su lambda izrazi u Javi i koje mogućnosti pružaju?

sobes.tech АИ

Одговор од АИ

Izraz lambda u Javi je anonimna funkcija koja ne pripada nijokoj klasi i može biti prosleđena kao objekat.

Sintaksa: (parametri) -> { telo }

Mogućnosti:

  1. Funkcionalni interfejs: Lambda izraz može biti dodeljen promenljivoj tipa funkcionalnog interfejsa (interfejs sa jednom apstraktnom metodom).
    // Funkcionalni interfejs  
    @FunctionalInterface  
    interface MyInterface {  
        void myMethod();  
    }  
    
    // Upotreba lambda izraza  
    MyInterface lambda = () -> System.out.println("Zdravo iz lambda!");  
    lambda.myMethod();  
    
  2. Pojednostavljenje koda: Zamenjuju anonimne unutrašnje klase za implementaciju funkcionalnih interfejsa.
    // Pre Java 8 (anonimna klasa)  
    Thread thread1 = new Thread(new Runnable() {  
        @Override  
        public void run() {  
            System.out.println("Stari način");  
        }  
    });  
    
    // Od Java 8 nadalje (lambda)  
    Thread thread2 = new Thread(() -> System.out.println("Lambda način"));  
    
  3. Upotreba u Stream API: Integriraju se sa API-jem Stream za izvršavanje operacija nad kolekcijama.
    List<String> names = Arrays.asList("Alice", "Bob", "Charlie");  
    names.stream()  
         .filter(name -> name.startsWith("A")) // Lambda izraz  
         .forEach(System.out::println);        // Metod referenca (lambda izraz)  
    
  4. Odloženo izvršavanje: Kod unutar lambda izraza se izvršava samo kada se pozove funkcionalna metoda.
  5. Opseg promenljivih: Lambda izrazi mogu uhvatiti promenljive iz spoljnog okruženja (lokalne promenljive moraju biti finalne ili efektivno finalne).
Prednost Opis
Sažetost koda Smanjuje "rečnu složenost" u poređenju sa anonimnim klasama.
Poboljšana čitljivost Kod postaje koncizniji i razumljiviji.
Paralelna obrada Podržava je API Stream za paralelne operacije.