Wie Verwenden von Lambda-Ausdrücke in Java 8

8 Java stellt ein neues Feature, das in gewisser Weise ähnlich wie anonyme Klassen, aber mit knapper Syntax. Genauer gesagt lässt ein Lambda-Ausdruck eine anonyme Klasse erstellen, die eine bestimmte Art von Schnittstelle implementiert ein genannt funktionale Schnittstelle- das hat eine und nur eine abstrakte Methode.

Das Ball Schnittstelle erfüllt diese Definition:

Interface-Ball {void Hit () -}

Hier ist die einzige abstrakte Methode ist die Hit Verfahren.

Eine funktionale Schnittstelle zusätzliche Methoden enthalten können, sofern sie nicht abstrakt sind. Bis Java 8 war dies nicht möglich, da eine Schnittstelle enthalten könnte, nur abstrakte Methoden. Doch in Java 8 können Sie Standardmethoden schaffen, die eine Standard-Implementierung zur Verfügung stellen. Somit ist eine funktionale Schnittstelle kann eine oder mehrere Standardmethoden enthalten, aber nur eine abstrakte Methode enthalten.

Ein Lambda-Ausdruck ist eine prägnante Art und Weise eine anonyme Klasse zu erstellen, die eine funktionelle Schnittstelle implementiert. Anstatt eine formale Methode Erklärung, nach der das Rückgabetyp, Methodenname, Parametertypen und Verfahren Körper enthält, definieren Sie einfach die Parametertypen und die Methode Körper. Der Java-Compiler folgert den Rest basierend auf dem Kontext, in dem Sie die Lambda-Ausdruck verwenden.

Die Parametertypen aus dem Verfahren Körper durch einen neuen Betreiber getrennt sind, die so genannte Pfeil Betreiber, der aus einem Bindestrich gefolgt von einem Größer-als-Zeichen. Hier ist ein Beispiel, das die implementiert Ball Schnittstelle:

() -> {System.out.println ( "Sie schlagen es!") -}

Hier ist der Lambda-Ausdruck implementiert eine funktionale Schnittstelle, deren einzelne Methode keine Parameter akzeptieren. Wenn das Verfahren aufgerufen wird, wird der Text "Sie schlagen es!" gedruckt.

Sie können einen Lambda-Ausdruck verwenden, überall können Sie eine normale Java-Ausdruck verwenden. Sie werden sie am meisten in Zuweisungsanweisungen oder als übergebenen Parameter verwenden. Die einzige Einschränkung ist, dass Sie einen Lambda-Ausdruck in einem Kontext nur verwenden können, die eine Instanz einer funktionalen Schnittstelle erfordert. Zum Beispiel, hier ist ein komplettes Programm, das einen Lambda-Ausdruck verwendet das zur Umsetzung Ball Schnittstelle:

public class LambdaBall {public static void main (String [] args) {Kugel b = () -> {System.out.println ( "Sie schlagen es!") -} -b.hit () -} Schnittstelle Kugel {void Hit()-}}

Der allgemeine Syntax für eine Lambda-Ausdruck ist dies:

(Parameter) -> Ausdruck

oder dieses:

(Parameter) -> { Erklärung- ...}

Wenn Sie einen Ausdruck verwenden, wird ein Semikolon nicht erforderlich. Wenn Sie eine oder mehrere Anweisungen zu verwenden, müssen die Angaben in geschweiften Klammern eingeschlossen werden und ein Semikolon am Ende jeder Anweisung erforderlich.

Vergessen Sie nicht, dass die Aussage in dem Sie die Lambda-Ausdruck verwenden, muss sich mit einem Semikolon enden. Somit hat die Lambda-Ausdruck in dem vorherigen Beispiel zwei Semikolons in enger Nachbarschaft:

Ball-b = () -> {System.out.println ( "Sie schlagen es!") -} -

Das erste Semikolon markiert das Ende der Anweisung, ruft System.out.println- das zweite Semikolon markiert das Ende der Zuweisungsanweisung, die die Lambda-Ausdruck auf die Variable zuweist b.

Menü