In einem Teil des Java-Codes, den ich geerbt habe, bin ich auf Folgendes gestoßen, was ein Lambda-Ausdruck zu sein scheint:

id ->""

Erscheint als Parameter für eine Methode:

runner.setIntanceName(id ->"")

Ich habe die Lambda Expressions -Dokumentation konsultiert, konnte aber die Bedeutung nicht finden dieses besonderen Ausdrucks.

Was bedeutet id ->""?

0
datv 18 Apr. 2018 im 12:40

4 Antworten

Beste Antwort

Z.B. du hast:

public static void setIntanceName(Function<String, String> function) {
    function.apply("aaa");
}

Verwenden Sie dann diese Methode: setIntanceName(id -> "") oder

setIntanceName(new Function<String, String>() {
    @Override
    public String apply(String id) {
        return "";
    }
});

Das heißt, Sie fügen der Methode eine Funktion hinzu (oder behandeln sie als Instanz einer Schnittstelle mit nur einer Methode - sie wird als funktionale Schnittstelle bezeichnet). Die Methode setIntanceName verwendet diese Funktion. In diesem Beispiel akzeptiert diese Funktion id=aaa und gibt immer empty als Ergebnis der Funktion zurück.

2
oleg.cherednik 18 Apr. 2018 im 09:44

Die linke Seite gibt die für den Ausdruck erforderlichen Parameter an, die auch leer sein können, wenn keine Parameter erforderlich sind.

Die rechte Seite ist der Lambda-Körper, der die Aktionen des Lambda-Ausdrucks angibt.

Hier ist also id ->"" id eine leere Zeichenfolge.

Lesen Sie mehr darüber hier

1
Hadi J 18 Apr. 2018 im 09:49

Ich denke, diese Person, die das geschrieben hat, wollte alle ID-Argumente ignorieren und nur eine leere Zeichenfolge zurückgeben.

1
SanchelliosProg 20 Apr. 2018 im 05:04

-> ist nur das Token, das die Parameter vom Body trennt. Siehe den Teil Syntax von Lambda-Ausdrücken in der Dokumentation, die Sie mit https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html

"" ist der Körper. In diesem Fall eine konstante leere Zeichenfolge.

0
mtj 18 Apr. 2018 im 09:45