Etudier Java 8 (expression lambda)

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 à.

Avançons pour le moment

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.

Interface fonctionnelle

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

Etudier Java 8 (expression lambda)
[Java] Expression Lambda
Expression lambda Java
Variations d'expressions lambda Java
Fonctionnalité d'expression lambda Java 8
expression lambda java [écriture de notes]
Évaluer java8 ~ Type Lambda ~
Expression lambda Java à nouveau
Étudier Java ―― 3
Étudier Java ―― 9
[Java] Interface fonctionnelle / expression lambda
Étudier Java ―― 4
Étudier Java -5
Étudier Java # 0
Flux Java8, résumé de l'expression lambda
Étudier Java ②
Étudier Java ―― 7
Étudier Java ―― 2
Étudier Java ①
Étudier Java -10
Contenu d'apprentissage de base Java 9 (expression lambda)
Qu'est-ce qu'une expression lambda (Java)
Étudier Java 8 (facultatif)
Étudier java9 (jShell)
Bonjour Java Lambda
Étudier Java 8 (Stream)
Récapitulons maintenant l'expression lambda Java
Etudier Java 8 (Collector / Collectors)
Quarkus enregistre Java Lambda! ??
Comprendre les expressions lambda Java 8
Etudier Java 8 (voir méthode)
Comment utiliser l'API Java avec des expressions lambda
À propos des expressions Java lambda
Étudier Java ~ Partie 8 ~ Cast
Java 8 pour démarrer maintenant ~ for Each et expression lambda ~
Introduction au style lambda
Expliquer les expressions lambda Java 8
Injection d'expression de table Java
résumé des expressions régulières java
Repenser le modèle d'expression et de conception de flux Java8 Lambda - Modèle de commande -
Premiers pas avec les anciens ingénieurs Java (Stream + Lambda)
Repenser le modèle d'expression et de conception de flux Java8 Lambda - Modèle d'objet nul -
Repenser les modèles d'expression et de conception de flux Java8 - Modèle de méthode
[Java] Introduction à l'expression lambda
Qu'est-ce qu'une expression lambda?
Attribuer des expressions lambda Java8 aux variables et les réutiliser
Java8 Lambda Expression & Stream Design Pattern Repenser - Modèle de chaîne de responsabilité -
Étudier Java # 6 (Comment écrire des blocs)
[Introduction à Java] À propos des expressions lambda
À propos de Lambda, Stream, LocalDate de Java8
Java sur AWS Lambda est-il lent?
Hello World avec AWS Lambda + Java
Essayez une expression If en Java
Java
Etudier Java 8 (méthode StaticIF et Default)
Etudier Java 8 (String Joiner et Join)
Java
Étudier java9 (dropWhile, takeWhile et Stream.ofNullable)
L'origine des expressions Java lambda