Sobes.tech
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:

  1. 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();  
    
  2. 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"));  
    
  3. 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)  
    
  4. Odložené provedení: Kód uvnitř lambda výrazu se provádí pouze při volání funkční metody.
  5. 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.