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

  1. 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();  
    
  2. 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"));  
    
  3. 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)  
    
  4. Uitgestelde uitvoering: De code binnen de lambda-uitdrukking wordt alleen uitgevoerd bij het aanroepen van de functionele methode.
  5. 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.