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.
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
Mit 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
Ich 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 JavaEine vorläufige Untersuchung von Java-Lambda-AusdrückenDas 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!