Java 9 a déjà été rendu public, mais cet article est destiné à ceux qui souhaitent revoir à nouveau les expressions lambda ajoutées dans Java 8. Il sert également de résumé personnel. Je vous serais reconnaissant si vous pouviez signaler des erreurs!
Le grand changement dans Java 8 est l'expression lambda. À l'origine, en mathématiques, il y avait une idée selon laquelle «une fonction est traitée comme une variable et opérée», et le nom λ (lambda) est souvent utilisé comme variable. L'expression lambda de Java incorpore cette idée mathématique dans Java, et je pense qu'il est facile de comprendre que le sens est "l'expression d'une fonction qui peut être traitée comme une valeur".
Par exemple, le code suivant.
(p) -> (p.getAge()) < 30)
Il s'agit d'une expression qui renvoie si l'âge de p est inférieur à 30 lorsque p est mis dans la fonction.
Comprenons l'expression lambda en écrivant un exemple d'expression lambda et en décomposant le code.
LambdaSample.java
public class LambdaSample {
public static void main(String[] args) {
Runnable r = () -> System.out.println("Hello Lambda!");
r.run();
}
}
Si vous essayez d'exécuter l'exemple ci-dessus, le résultat suivant sera affiché.
hello lambda!
Le code écrit en expression lambda est ci-dessous.
() -> System.out.println("Hello Lambda!")
Si vous écrivez ce LambdaSample.java avant JDK8, ce sera comme suit.
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();
}
}
Dans LambdaSample.java, les parties suivantes sont remplacées par des expressions lambda.
JDK8 ou version antérieure
new Runnable() {
@Override
public void run() {
System.out.println("Before Lambda!");
}
}
JDK8
() -> System.out.println("Hello Lambda!")
La quantité de code a considérablement diminué.
Ce code écrit avant JDK8 est également appelé "classe anonyme". En d'autres termes, une expression lambda peut être considérée comme «une réécriture d'un objet de classe anonyme qui implémente une interface».
http://java-code.jp/106 https://qiita.com/sanotyan1202/items/64593e8e981e8d6439d3 ["Style Lambda" commençant par 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? Ie = UTF8 & qid = 1508761078 & sr = 8-2 & mots-clés = java8) [Programmation pratique Java SE 8 que les programmeurs Java veulent apprendre](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? Ie = UTF8 & qid = 1508761078 & sr = 8-3 & mots-clés = java8)
Recommended Posts