Middle
Co jsou to lambda výrazy v Javě a jaké možnosti nabízejí?
sobes.tech AI
Odpověď od AI
Výraz lambda v Javě je anonymní funkce, která nepatří žádné třídě a může být předána jako objekt.
Syntaxe: (parametry) -> { tělo }
Možnosti:
- Funkční rozhraní: Lambda výraz může být přiřazen proměnné typu funkčního rozhraní (rozhraní s jednou abstraktní metodou).
// Funkční rozhraní @FunctionalInterface interface MyInterface { void myMethod(); } // Použití lambda výrazu MyInterface lambda = () -> System.out.println("Ahoj z lambda!"); lambda.myMethod(); - Zjednodušení kódu: Nahrazují anonymní vnitřní třídy při implementaci funkčních rozhraní.
// Před Java 8 (anonymní třída) Thread thread1 = new Thread(new Runnable() { @Override public void run() { System.out.println("Starý způsob"); } }); // Od Java 8 (lambda) Thread thread2 = new Thread(() -> System.out.println("Lambda způsob")); - Použití v Stream API: Integrují se s API Stream pro provádění operací nad kolekcemi.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.stream() .filter(name -> name.startsWith("A")) // Lambda výraz .forEach(System.out::println); // Metodová reference (lambda výraz) - Odložené provedení: Kód uvnitř lambda výrazu se provádí pouze při volání funkční metody.
- Rozsah proměnných: Lambda výrazy mohou zachytit proměnné z vnějšího prostředí (místní proměnné musí být final nebo efektivně final).
| Výhoda | Popis |
|---|---|
| Stručnost kódu | Snižuje "slovníkovost" ve srovnání s anonymními třídami. |
| Zlepšení čitelnosti | Kód je stručnější a srozumitelnější. |
| Paralelní zpracování | Podporováno API Stream pro paralelní operace. |