Lambda-Ausdrücke
In Java ist es nicht möglich, Funktionen als Parameter zu übergeben. Ist dies nötig, werden Schnittstellen (Interfaces) definiert, die die notwendige Methode abstract definieren. Wollte man eine Methode übergeben, musste man vor Java 8 eine Klasse definieren, die dieses Interface implementierte und dann ein Objekt dieser Klasse übergeben. Durch die Definition des Interfaces war sichergestellt, dass das Objekt die notwendige Methode enthielt.
Beispiel: Sortieren von Arrays
class Vergleich implements Comparator{ int compare(Integer zahl1, Integer zahl2) { if(zahl1 > zahl2) return 1; else return 0; } … Arrays.sort(zahlenliste, new Vergleich());
Seit Java 8 gibt es ein neues Sprachelement – den Lambda-Ausdruck, der es erlaubt, dies kompakter zu schreiben. Immer wenn eine Schnittstelle nur eine einzige Methode enthält – man nennt sie dann funktionale Schnittstelle –, dann kann ein Lambda-Ausdruck eingesetzt werden.
Beispiel: Array-Sortierung
Arrays.sort(zahlenliste, (Integer zahl1, Integer zahl2) -> {if(zahl1 > zahl2) return 1; else return 0;} );
Beispie: Action-Listener
sLaenge.valueProperty().addListener( (observable, oldValue, newValue) -> stricheln(alt) );
Die Methode addListener erwartet eigentlich ein Objekt einer Klasse, die
die Schnittstelle ChangeListener implementiert. In dieser Schnittstelle ist
eine Methode changed(ObservableValue observable, T oldValue, T newValue)
definiert. Die Parameter dieser Methode müssen in einem
Lambda-Ausdruck in der ersten Klammer stehen, dann folgt das Zeichen ->
und dann die Befehle, die die abstrakte Methode changed implementieren. In
diesem Befehl wird also eine Klasse definiert, die ChangeListener
implementiert, wobei der Code automatisch der (einzigen) Methode zugeordnet
wird, die dieses Interface enthält. Davon wird ein Objekt erzeugt und der
Methode addListener übergeben.
Das klingt alles sehr kompliziert, lässt sich aber sehr intuitiv nutzen. Die SuS sollen an dieser Stelle nicht die Hintergründe von Lambda-Ausdrücken verstehen. Dieses würde fundierte Kenntnisse der objektorientierten Programmierung voraussetzen. Sie nutzen dieses Sprachmittel, indem sie den vorgegebenen Quelltext anpassen, um eigene Lambda-Ausdrücke zu erstellen.
Hintergrund GUI-Programmierung: Herunterladen [odt][289 KB]
Hintergrund GUI-Programmierung: Herunterladen [pdf][517 KB]
Weiter zu Kopiervorlagen