onsdag 28 november 2012

Lambda-uttryck i Java SE 8

Tack för visat intresse!

Den som vill prova lambda à la jdk 8 behöver bara ladda hem jdk 8 med lambda-stöd.
Utvecklingen av jdk8 sker i en branch som ännu så länge kan laddas ner separat. Alla föreslagna ändringar i jdk8 finns alltså inte med här men tillräckligt för att leka med.

Vidare behöver du en IDE med lambda-stöd. I skrivandes stund finns Netbeans och nyligen släppta IDEA 12 (på demon använde jag experimentella IDEA IntelliJ Leda) med stöd för lambda-uttryck.

Brian Goetz har författat en del intressant och lättläst (i alla fall mer lättläst än själva JSR 335) material som sammanställer lambda-relaterade språk-förbättringar i jdk8.
  • http://cr.openjdk.java.net/~briangoetz/lambda/sotc3.html
  • http://cr.openjdk.java.net/~briangoetz/lambda/collections-overview.html
  • http://cr.openjdk.java.net/~briangoetz/lambda/lambda-translation.html
Prova gärna nedanstående recept för att banta antalet rader i din kodbas:

Thread thread = new Thread(
    () -> System.out.println("Do this later in separate thread..."));

Eller en läcker list-reduktion:
final List<String> names =
    Arrays.asList("ghandi", "mandela", "tutu", "king", "theresa");

names.stream()
    .filter(s -> s.startsWith("t"))
    .forEach(s -> System.out.println("Namn som börjar på t: " + s));

...där det senaste torde ge följande output när du kör det:
Namn som börjar på t: tutu
Namn som börjar på t: theresa

1 kommentar: