Sobes.tech
Junior

Co umožňují lambda výrazy v Javě?

sobes.tech AI

Odpověď od AI

Lambda výrazy v Java, zavedené v Java 8, umožňujú:

  • Implementovať rozhrania s jednou abstraktnou metódou (funkčné rozhrania): Toto je ich hlavný účel. Lambda výrazy poskytujú stručnú syntax na vytváranie inštancií funkčných rozhraní.
// Pred Java 8
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        System.out.println("Ahoj pred Java 8!");
    }
};

// S Java 8
Runnable lambdaRunnable = () -> System.out.println("Ahoj Java 8!");
  • Prenášať správanie (funkcie) ako argumenty metódam: To rozširuje možnosti funkcionálneho programovania v Jave. Metódy môžu akceptovať lambda výrazy ako parametre.
// Príklad použitia API Stream s lambda
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.stream()
     .filter(name -> name.startsWith("A")) // Lambda ako argument filter
     .forEach(System.out::println);       // Lambda (referencia na metódu) ako argument forEach
  • Používať API Stream: Lambda výrazy sú základom pre prácu s novým API Stream, umožňujúc efektívne spracovanie kolekcií dát.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sumOfEven = numbers.stream()
                      .filter(n -> n % 2 == 0)
                      .mapToInt(Integer::intValue)
                      .sum();
  • Zjednodušiť implementáciu anonymných vnorených tried pre funkčné rozhrania: Lambda nahrádzajú zdĺhavú syntax anonymných tried v tomto kontexte.

  • Zlepšiť čitateľnosť kódu: Pre jednoduché operácie lambda robia kód stručnejším a zrozumiteľnejším.

  • Umožniť odložené vykonanie kódu: Lambda vyjadrenie opisuje akciu, ktorá bude vykonaná neskôr, keď bude volaná.

Lambda majú tiež prístup k lokálnym premenným vonkajšieho prostredia (ak sú efektívne final).

Celkovo lambda výrazy robia Java výraznejšou a vhodnejšou pre funkčný štýl programovania.