Heim  >  Artikel  >  Java  >  Lassen Sie uns das Verständnis von Lambda-Ausdrücken in Java testen und erlernen

Lassen Sie uns das Verständnis von Lambda-Ausdrücken in Java testen und erlernen

php是最好的语言
php是最好的语言Original
2018-08-01 12:03:072211Durchsuche

Chat:

Es ist lange her, seit JDK8 herauskam, ich habe ein wenig darüber gelernt, es dann verworfen und jetzt hole ich es wieder nach. Obwohl es jetzt JDK11 ist.

Dieser Artikel wird fortlaufend aktualisiert.

Text:

Schauen Sie sich den Code direkt an. In den neuen Funktionen von Java8 können wir so schreiben:

public static void main(String[] args) {
        Supplier<Integer> supplier = ()->1;
        Consumer<String> consumer = (a)-> System.out.println(a);
        System.out.println(supplier.get());
        consumer.accept("test");
    }

Es ist sehr modisch. Können Sie einen so prägnanten Code erstellen? Ich meine, Sie Java7

Klauen Sie zuerst ein Bild und erklären Sie Lambda

Lassen Sie uns das Verständnis von Lambda-Ausdrücken in Java testen und erlernenMit anderen Worten, Lambda-Ausdruck,

erstellt eine Implementierung der entsprechenden Schnittstelle und weist sie dann der Variablen

zu. Verwendet es den Compiler? Überprüfen Sie den kompilierten Code wie folgt:

1
test

Process finished with exit code 0
Der Compiler führt diese Funktion nicht aus, daher kann es sein, dass die JVM die Lambda-Funktion implementiert hat. Wir werden später mehr darüber erfahren. Markierung 1

Hier geschrieben, können Sie wissen, dass Lambda-Ausdrücke die Codemenge reduzieren. Vor Java8 konnten Sie nur anonyme innere Klassen verwenden oder eine Klasse erstellen, um die Schnittstelle zu implementieren, um diese Funktion zu erreichen. Wie folgt

public static void main(String[] args) {
        Supplier<Integer> supplier = () -> {
            return 1;
        };
        Consumer<String> consumer = (a) -> {
            System.out.println(a);
        };
        System.out.println(supplier.get());
        consumer.accept("test");
    }

Eigentlich bin ich neugieriger auf die Schnittstelle zu Lambda. Öffnen Sie den Quellcode und Sie können sehen

Supplier<Integer> supplier = new Supplier<Integer>() {
            @Override
            public Integer get() {
                return 1;
            }
        };
@FunctionalInterface
public interface Supplier<T> {

    /**
     * Gets a result.
     *
     * @return a result
     */
    T get();
}

Jetzt können wir FunctionalInterface verwenden, um herauszufinden, welche Schnittstellen in JDK8 funktionsfähig sind Schnittstellen

Lassen Sie uns das Verständnis von Lambda-Ausdrücken in Java testen und erlernenIch werde ein oder zwei der beliebtesten zum Testen und Lernen auswählen

Oh, lassen Sie mich zuerst unterbrechen, ich habe eine sehr wichtige Passage gesehen Als ich gerade den Artikel gelesen habe (in der Praxis sind funktionale Schnittstellen sehr fragil: Solange ein Entwickler der Schnittstelle eine Funktion hinzufügt, ist die Schnittstelle keine funktionale Schnittstelle mehr und führt zu Kompilierungsfehlern. Um diese Fragilität zu überwinden Codeebene und explizit angeben, dass es sich bei einer Schnittstelle um eine funktionale Schnittstelle handelt. Java 8 bietet eine spezielle Annotation)

Ich habe ArrayList und Optional ausgewählt, beides sehr häufig verwendete Klassen.

Verwandte Artikel:

Detailliertes Verständnis von Lambda-Ausdrücken in Java

Eine vorläufige Untersuchung von Java-Lambda-Ausdrücken

Ähnliche Videos:


JavaScript-Video-Tutorial für reguläre Ausdrücke


Das obige ist der detaillierte Inhalt vonLassen Sie uns das Verständnis von Lambda-Ausdrücken in Java testen und erlernen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn