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:
- 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(); - 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")); - 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) - Odloženo izvršavanje: Kod unutar lambda izraza se izvršava samo kada se pozove funkcionalna metoda.
- 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. |