Java 9 wurde bereits für die Öffentlichkeit freigegeben, aber dieser Artikel ist für diejenigen gedacht, die die in Java 8 hinzugefügten Lambda-Ausdrücke erneut überprüfen möchten. Es dient auch als persönliche Zusammenfassung. Ich würde mich freuen, wenn Sie auf Fehler hinweisen könnten!
Die große Änderung in Java 8 ist der Lambda-Ausdruck. Ursprünglich gab es in der Mathematik die Idee, dass "eine Funktion wie eine Variable behandelt und betrieben wird", und der Name λ (Lambda) wird häufig als Variable verwendet. Der Lambda-Ausdruck von Java integriert diese mathematische Idee in Java, und ich denke, es ist leicht zu verstehen, dass die Bedeutung "Ausdruck einer Funktion, die als Wert behandelt werden kann" ist.
Zum Beispiel der folgende Code.
(p) -> (p.getAge()) < 30)
Dies ist ein Ausdruck, der zurückgegeben wird, wenn das Alter von p weniger als 30 Jahre beträgt, wenn p in die Funktion eingefügt wird.
Lassen Sie uns den Lambda-Ausdruck verstehen, indem wir einen Beispiel-Lambda-Ausdruck schreiben und den Code zerlegen.
LambdaSample.java
public class LambdaSample {
public static void main(String[] args) {
Runnable r = () -> System.out.println("Hello Lambda!");
r.run();
}
}
Wenn ich das obige Beispiel ausführe, erhalte ich das folgende Ergebnis.
hello lambda!
Der im Lambda-Ausdruck geschriebene Code ist unten.
() -> System.out.println("Hello Lambda!")
Wenn Sie diese LambdaSample.java vor JDK8 schreiben, ist dies wie folgt.
RunnableSample.java
public class RunnableSample {
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println("Before Lambda!");
}
};
r.run();
}
}
In LambdaSample.java wird der folgende Teil durch einen Lambda-Ausdruck ersetzt.
JDK8 oder früher
new Runnable() {
@Override
public void run() {
System.out.println("Before Lambda!");
}
}
JDK8
() -> System.out.println("Hello Lambda!")
Die Menge an Code hat sich erheblich verringert.
Dieser vor JDK8 geschriebene Code wird auch als "anonyme Klasse" bezeichnet. Mit anderen Worten, ein Lambda-Ausdruck kann als "Umschreiben eines anonymen Klassenobjekts, das eine Schnittstelle implementiert" bezeichnet werden.
http://java-code.jp/106 https://qiita.com/sanotyan1202/items/64593e8e981e8d6439d3 ["Lambda-Stil" beginnend mit Java8](https://www.amazon.co.jp/Java8%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82 % 8B% E3% 80% 8C% E3% 83% A9% E3% 83% A0% E3% 83% 80% E5% BC% 8F% E3% 80% 8D-I% E3% 83% BB-BOOKS-% E6% B8% 85% E6% B0% B4-% E7% BE% 8E% E6% A8% B9 / dp / 4777518418 / ref = sr_1_2? Dh = UTF8 & qid = 1508761078 & sr = 8-2 & keywords = java8) [Java SE 8 Praktische Programmierung, die Java-Programmierer lernen möchten](https://www.amazon.co.jp/Java%E3%83%97%E3%83%AD%E3%82%B0%E3% 83% A9% E3% 83% 9E% E3% 83% BC% E3% 81% AA% E3% 82% 89% E7% BF% 92% E5% BE% 97% E3% 81% 97% E3% 81% A6% E3% 81% 8A% E3% 81% 8D% E3% 81% 9F% E3% 81% 84-Java-SE-8-% E5% AE% 9F% E8% B7% B5% E3% 83% 97 % E3% 83% AD% E3% 82% B0% E3% 83% A9% E3% 83% 9F% E3% 83% B3% E3% 82% B0-ebook / dp / B00VM0FMIW / ref = sr_1_3? = 1508761078 & sr = 8-3 & keywords = java8)
Recommended Posts