Sobes.tech
Middle

Was sind Lambda-Ausdrücke in Java und welche Möglichkeiten bieten sie?

sobes.tech KI

Antwort von AI

Lambda-Ausdrücke in Java sind anonyme Funktionen, die keiner Klasse angehören und als Objekt übergeben werden können.

Syntax: (Parameter) -> { Körper }

Möglichkeiten:

  1. Funktionale Schnittstelle: Der Lambda-Ausdruck kann einer Variablen vom Typ einer funktionalen Schnittstelle (Schnittstelle mit einer einzigen abstrakten Methode) zugewiesen werden.
    // Funktionale Schnittstelle  
    @FunctionalInterface  
    interface MyInterface {  
        void myMethod();  
    }  
    
    // Verwendung des Lambda-Ausdrucks  
    MyInterface lambda = () -> System.out.println("Hallo vom Lambda!");  
    lambda.myMethod();  
    
  2. Codevereinfachung: Ersetzen anonymer innerer Klassen bei der Implementierung funktionaler Schnittstellen.
    // Vor Java 8 (anonyme Klasse)  
    Thread thread1 = new Thread(new Runnable() {  
        @Override  
        public void run() {  
            System.out.println("Alte Methode");  
        }  
    });  
    
    // Ab Java 8 (Lambda)  
    Thread thread2 = new Thread(() -> System.out.println("Lambda-Methode"));  
    
  3. Verwendung in der Stream API: Integration mit der Stream API zur Durchführung von Operationen an Sammlungen.
    List<String> names = Arrays.asList("Alice", "Bob", "Charlie");  
    names.stream()  
         .filter(name -> name.startsWith("A")) // Lambda-Ausdruck  
         .forEach(System.out::println);        // Methodenreferenz (Lambda-Ausdruck)  
    
  4. Verzögerte Ausführung: Der Code innerhalb des Lambda-Ausdrucks wird nur bei Aufruf der funktionalen Methode ausgeführt.
  5. Gültigkeitsbereich: Lambda-Ausdrücke können Variablen aus dem äußeren Gültigkeitsbereich erfassen (lokale Variablen müssen final oder effektiv final sein).
Vorteil Beschreibung
Kürze des Codes Reduziert die "Wortreichheit" im Vergleich zu anonymen Klassen.
Verbesserte Lesbarkeit Der Code wird prägnanter und verständlicher.
Parallele Verarbeitung Wird von der Stream API für parallele Operationen unterstützt.