Java -Tutorials

Java-HOME Java-Einführung Java-Erste Schritte Java-Syntax Java-Kommentare Java-Variablen Java-Datentypen Java-Type-Casting Java-Operatoren Java-Strings Java-Mathematik Java-Booleans Java Wenn ... Sonst Java-Schalter Java-While-Schleife Java-For-Schleife Java Break/Continue Java-Arrays

Java-Methoden

Java-Methoden Java-Methodenparameter Überladen von Java-Methoden Java-Bereich Java-Rekursion

Java-Klassen

Java-OOP Java-Klassen/Objekte Attribute der Java-Klasse Java-Klassenmethoden Java-Konstruktoren Java-Modifikatoren Java-Kapselung Java-Pakete / API Java-Vererbung Java-Polymorphismus Innere Java-Klassen Java-Abstraktion Java-Schnittstelle Java-Enumerationen Java-Benutzereingabe Java-Datum Java-ArrayList Java LinkedList Java-HashMap Java-HashSet Java-Iterator Java-Wrapper-Klassen Java-Ausnahmen Java-RegEx Java-Threads Java-Lambda

Umgang mit Java-Dateien

Java-Dateien Java-Dateien erstellen/schreiben Java-Dateien lesen Java-Dateien löschen

Java-How-To

Fügen Sie zwei Zahlen hinzu

Java-Referenz

Java-Schlüsselwörter Java-String-Methoden Java-Mathematikmethoden

Java-Beispiele

Java-Beispiele Java-Compiler Java-Übungen Java Quiz Java-Zertifikat


Java -Lambda-Ausdrücke


Java-Lambda-Ausdrücke

Lambda-Ausdrücke wurden in Java 8 hinzugefügt.

Ein Lambda-Ausdruck ist ein kurzer Codeblock, der Parameter aufnimmt und einen Wert zurückgibt. Lambda-Ausdrücke ähneln Methoden, benötigen jedoch keinen Namen und können direkt im Hauptteil einer Methode implementiert werden.


Syntax

Der einfachste Lambda-Ausdruck enthält einen einzelnen Parameter und einen Ausdruck:

parameter -> expression

Um mehr als einen Parameter zu verwenden, schließen Sie sie in Klammern ein:

(parameter1, parameter2) -> expression

Ausdrücke sind begrenzt. Sie müssen sofort einen Wert zurückgeben und dürfen keine Variablen, Zuweisungen oder Anweisungen wie ifoder enthalten for. Um komplexere Operationen durchzuführen, kann ein Codeblock mit geschweiften Klammern verwendet werden. Wenn der Lambda-Ausdruck einen Wert zurückgeben muss, sollte der Codeblock eine returnAnweisung enthalten.

(parameter1, parameter2) -> { code block }

Verwenden von Lambda-Ausdrücken

Lambda-Ausdrücke werden normalerweise als Parameter an eine Funktion übergeben:

Beispiel

Verwenden Sie einen Lamba-Ausdruck in der ArrayList's- forEach()Methode, um jedes Element in der Liste zu drucken:

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    numbers.forEach( (n) -> { System.out.println(n); } );
  }
}

Lambda-Ausdrücke können in Variablen gespeichert werden, wenn der Variablentyp eine Schnittstelle ist, die nur eine Methode hat. Der Lambda-Ausdruck sollte die gleiche Anzahl von Parametern und den gleichen Rückgabetyp wie diese Methode haben. Java hat viele dieser Arten von Schnittstellen eingebaut, wie zum Beispiel die ConsumerSchnittstelle (im java.utilPaket enthalten), die von Listen verwendet wird.

Beispiel

Verwenden Sie die Java- ConsumerSchnittstelle, um einen Lambda-Ausdruck in einer Variablen zu speichern:

import java.util.ArrayList;
import java.util.function.Consumer;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    Consumer<Integer> method = (n) -> { System.out.println(n); };
    numbers.forEach( method );
  }
}

Um einen Lambda-Ausdruck in einer Methode zu verwenden, sollte die Methode einen Parameter mit einer Single-Method-Schnittstelle als Typ haben. Beim Aufrufen der Methode der Schnittstelle wird der Lambda-Ausdruck ausgeführt:

Beispiel

Erstellen Sie eine Methode, die einen Lambda-Ausdruck als Parameter verwendet:

interface StringFunction {
  String run(String str);
}

public class Main {
  public static void main(String[] args) {
    StringFunction exclaim = (s) -> s + "!";
    StringFunction ask = (s) -> s + "?";
    printFormatted("Hello", exclaim);
    printFormatted("Hello", ask);
  }
  public static void printFormatted(String str, StringFunction format) {
    String result = format.run(str);
    System.out.println(result);
  }
}