La deuxième étape. C'est lambda maintenant. Je ne l'ai pas utilisé au travail, donc je ne comprends pas vraiment. This God Site J'ai essayé d'étudier en référence à.
Pour le moment, j'ai écrit le plus simple.
/*Exemple 1. Passons à un simple sans arguments pour le moment*/
Runnable runner = () -> {
System.out.println("Première cérémonie lambda. Je ne sais pas ce qui est génial en ce moment.");
};
Thread t = new Thread(runner);
t.start();
Quand je fais cela, je ne suis pas sûr, mais le message que j'ai écrit dans la sortie standard apparaît sur la console. Il semble être écrit comme argument-> traitement </ b>. Dans cet exemple, il n'y a pas d'argument, donc ça ne sort pas, mais quand il y a un argument,
(s) Type omis (Chaîne s) Écrivez à la fois le type et le nom de la variable s Ecrivez uniquement le nom de la variable
Vous pouvez faire différentes choses. Il semble que vous ne pouvez omettre jusqu'à () que lorsqu'il n'y a qu'un seul argument.
Si ce n'est qu'un exemple ①, ça ne sortira pas, alors j'essaierai un peu plus.
/*Exemple 2. Avec argument*/
List<String> l = new ArrayList<>();
l.add("hello");
l.add("world");
//J'ai essayé de le faire ressembler à du lambda
l.forEach(s -> {
System.out.println("loop:" + s);
});
D'une manière ou d'une autre, cela ressemble à du lambda (mystère). Quand tu cours
loop:hello
loop:world
Sortira. Soudain, une expression lambda apparaît dans l'argument de la méthode forEach, et en l'écrivant au début? ?? ?? ?? Cependant, l'argument de la méthode forEach est une @FunctionalInterface standard appelée Consumer. Ce serait bien de penser qu'il décrit la mise en œuvre de ce consommateur. (FunctionalInterface = l'interface fonctionnelle sera décrite plus tard) Ainsi, vous pouvez préparer correctement la classe d'implémentation Consumer et le faire comme ceci.
/**
*Une classe qui implémente ConsumerIF.
* @author komikcomik
*
*/
public class ConsumerImpl implements Consumer<Object> {
@Override
public void accept(Object t) {
System.out.println("J'ai implémenté Consumer:" + t);
}
}
Appelez ça comme ça.
/*Exemple 3. Lorsque vous utilisez votre propre interface fonctionnelle qui implémente Consumer. Ce n'est plus lambda*/
l.forEach(new ConsumerImpl());
Une fois exécuté, ce qui suit apparaîtra.
J'ai implémenté Consumer:hello
J'ai implémenté Consumer:world
Vous pouvez profiter de la sensation d'utiliser le style lambda dans l'exemple 2 (même si je pense que vous devriez le choisir en fonction de la sensation de l'utiliser). Dans l'exemple 1, cela ressemble à une version avec une manière différente d'écrire des classes anonymes Je n'ai pas vraiment compris l'image à utiliser sur le site de développement. Une méthode standard java qui prend une interface fonctionnelle comme argument, comme dans les exemples 2 et 3. Quand il s'agit d'écrire une implémentation de l'argument IF, il semble qu'il y ait une bonne utilité. Cependant, même si je comprends la théorie, il faudra du temps pour s'y habituer.
C'est celui qui est sorti en chemin. Pour connaître les conditions détaillées, veuillez consulter This God Site, mais si vous expliquez correctement Une interface dans laquelle une seule méthode abstraite est définie. Ce IF semble être une destination d'affectation pour les expressions lambda et les références de méthode (bien que je ne les ai pas encore couvertes dans mon article). Donc, si vous voulez comprendre les éléments Java 8 tels que lambda, comprendre le SI fonctionnel est indispensable.
Comme je l'ai écrit, les conditions pour devenir un IF fonctionnel sont simples, vous pouvez donc créer le vôtre, mais en Java 8 ・ Fournisseur ・ ・ ・ Renvoie une valeur sans argument -Consommateur: il y a un argument et aucune valeur n'est retournée (quelque chose est fait). Celui qui est sorti dans l'exemple précédent. ・ Prédicat ・ ・ ・ Renvoie vrai / faux avec des arguments ・ Fonction ・ ・ ・ Renvoie un type arbitraire avec un argument (certains sont pour les types primitifs) Il semble qu'il fournit divers IF de fonction standard comme Il peut être préférable pour les nouveaux venus dans le projet de développement de choisir celui qui est déjà fourni en standard plutôt que de le faire eux-mêmes.
Recommended Posts