Middle
Wat zijn lambda-uitdrukkingen in Java en welke mogelijkheden bieden ze?
sobes.tech AI
Antwoord van AI
De lambda-uitdrukking in Java is een anonieme functie die niet tot een klasse behoort en als object kan worden doorgegeven.
Syntax: (parameters) -> { lichaam }
Mogelijkheden:
- Functioneel interface: De lambda-uitdrukking kan worden toegewezen aan een variabele van het type functioneel interface (interface met één abstracte methode).
// Functioneel interface @FunctionalInterface interface MyInterface { void myMethod(); } // Gebruik van de lambda-uitdrukking MyInterface lambda = () -> System.out.println("Hallo van lambda!"); lambda.myMethod(); - Codeversimpeling: Vervangt anonieme interne klassen voor het implementeren van functionele interfaces.
// Voor Java 8 (anonieme klasse) Thread thread1 = new Thread(new Runnable() { @Override public void run() { System.out.println("Oude manier"); } }); // Vanaf Java 8 (lambda) Thread thread2 = new Thread(() -> System.out.println("Lambda manier")); - Gebruik in Stream API: Wordt geïntegreerd met de Stream API voor bewerkingen op collecties.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.stream() .filter(name -> name.startsWith("A")) // Lambda-uitdrukking .forEach(System.out::println); // Methode-referentie (lambda-uitdrukking) - Uitgestelde uitvoering: De code binnen de lambda-uitdrukking wordt alleen uitgevoerd bij het aanroepen van de functionele methode.
- Reikwijdte van variabelen: Lambda-uitdrukkingen kunnen variabelen uit de externe scope vastleggen (lokale variabelen moeten final of effectief final zijn).
| Voordeel | Beschrijving |
|---|---|
| Bekorting van code | Vermindert "woordelijkheid" in vergelijking met anonieme klassen. |
| Verbeterde leesbaarheid | De code wordt beknopter en begrijpelijker. |
| Parallelle verwerking | Wordt ondersteund door de Stream API voor parallelle operaties. |