Sobes.tech
Junior

Wat stellen lambda-uitdrukkingen in Java je toe te doen?

sobes.tech AI

Antwoord van AI

Lambda-expressies in Java, geïntroduceerd in Java 8, maken het mogelijk:

  • Implementeren van interfaces met één abstracte methode (functionele interfaces): Dit is hun belangrijkste doel. Lambda's bieden een korte syntax voor het maken van instanties van functionele interfaces.
// Voor Java 8
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        System.out.println("Hallo voor Java 8!");
    }
};

// Met Java 8
Runnable lambdaRunnable = () -> System.out.println("Hallo Java 8!");
  • Gedrag (functies) als argumenten aan methoden doorgeven: Dit breidt de mogelijkheden van functioneel programmeren in Java uit. Methoden kunnen lambda-expressies als parameters accepteren.
// Voorbeeld van gebruik van de Stream API met lambda
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.stream()
     .filter(name -> name.startsWith("A")) // Lambda als argument voor filter
     .forEach(System.out::println);       // Lambda (Method Reference) als argument voor forEach
  • Gebruik maken van de Stream API: Lambda-expressies vormen de basis voor het werken met de nieuwe Stream API, waarmee je efficiënt collecties data kunt verwerken.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sumOfEven = numbers.stream()
                      .filter(n -> n % 2 == 0)
                      .mapToInt(Integer::intValue)
                      .sum();
  • Vereenvoudigen van de implementatie van anonieme interne klassen voor functionele interfaces: Lambda's vervangen de uitgebreide syntax van anonieme klassen in deze context.

  • Verbeteren van de leesbaarheid van de code: Voor eenvoudige operaties maken lambda's de code compacter en begrijpelijker.

  • Toestaan van uitgestelde uitvoering van code: De lambda-uitdrukking beschrijft een actie die later wordt uitgevoerd wanneer deze wordt aangeroepen.

Lambda's hebben ook toegang tot lokale variabelen uit de externe scope (als ze effectief final zijn).

Over het algemeen maken lambda's Java expressiever en geschikter voor de functionele programmeerstijl.