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:
- 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(); - 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")); - 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) - Verzögerte Ausführung: Der Code innerhalb des Lambda-Ausdrucks wird nur bei Aufruf der funktionalen Methode ausgeführt.
- 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. |