Java 8 studieren (Lambda-Ausdruck)

Die zweite Stufe. Es ist jetzt Lambda. Ich habe es bei der Arbeit nicht benutzt, deshalb verstehe ich es nicht wirklich Gottes Seite hier Ich habe versucht, mit Bezug auf zu studieren.

Bewegen wir uns vorerst

Vorerst habe ich das einfachste geschrieben.

		/*Beispiel 1. Lassen Sie uns ein einfaches ohne Argumente vorerst verschieben*/
		Runnable runner = () -> {
			System.out.println("Erste Lambda-Zeremonie. Ich weiß nicht, was im Moment großartig ist.");
		};

		Thread t = new Thread(runner);
		t.start();

Wenn ich das mache, bin ich mir nicht sicher, aber die Nachricht, die ich in der Standardausgabe geschrieben habe, wird auf der Konsole angezeigt. Es scheint als Argument-> Verarbeitung </ b> geschrieben zu sein. In diesem Beispiel gibt es kein Argument, es kommt also nicht heraus, aber wenn es ein Argument gibt,

(s) Typ weggelassen (Zeichenfolge s) Schreiben Sie sowohl den Typ als auch den Variablennamen s Schreiben Sie nur den Variablennamen

Sie können verschiedene Dinge tun. Es scheint, dass Sie bis zu () nur weglassen können, wenn es nur ein Argument gibt.

Wenn es nur ein Beispiel ist, wird es nicht herauskommen, also werde ich ein bisschen mehr versuchen.

		/*Beispiel 2. Mit Argument*/
		List<String> l = new ArrayList<>();
		l.add("hello");
		l.add("world");

		//Ich habe versucht, es wie Lambda aussehen zu lassen
		l.forEach(s -> {
			System.out.println("loop:" + s);
		});

Irgendwie sieht es aus wie Lambda (Mysterium). Wenn du rennst

loop:hello
loop:world

Wird rauskommen. Plötzlich erscheint ein Lambda-Ausdruck im Argument der forEach-Methode, und beim Schreiben zuerst? ?? ?? ?? Das Argument der forEach-Methode ist jedoch ein Standard-@FunctionalInterface namens Consumer. Es wäre schön zu denken, dass es die Implementierung dieses Verbrauchers beschreibt. (FunctionalInterface = Funktionsschnittstelle wird später beschrieben) So können Sie die Consumer-Implementierungsklasse richtig vorbereiten und so vorgehen.

/**
 *Eine Klasse, die ConsumerIF implementiert.
 * @author komikcomik
 *
 */
public class ConsumerImpl implements Consumer<Object> {

	@Override
	public void accept(Object t) {
		System.out.println("Ich habe Consumer implementiert:" + t);
	}

}

Nennen Sie das so.

		/*Beispiel 3. Wenn Sie Ihre eigene Funktionsschnittstelle verwenden, die Consumer implementiert. Es ist kein Lambda mehr*/
		l.forEach(new ConsumerImpl());

Bei der Ausführung wird Folgendes angezeigt.

Ich habe Consumer implementiert:hello
Ich habe Consumer implementiert:world

Sie können das Gefühl genießen, den Lambda-Stil in Beispiel 2 zu verwenden (obwohl ich denke, Sie sollten ihn basierend auf dem Gefühl wählen, ihn zu verwenden). Wenn es sich nur um Beispiel 1 handelt, scheint es sich um eine Version mit einer anderen Schreibweise der anonymen Klasse zu handeln. Ich habe das Bild, das auf der Entwicklungsseite verwendet werden soll, nicht wirklich verstanden. Eine Java-Standardmethode, die eine funktionale Schnittstelle als Argument verwendet, wie in den Beispielen 2 und 3. Wenn es darum geht, eine Implementierung des Arguments IF zu schreiben, scheint es eine gute Verwendung dafür zu geben. Selbst wenn ich die Theorie verstehe, wird es einige Zeit dauern, bis ich mich daran gewöhnt habe.

Funktionsschnittstelle

Dies ist derjenige, der auf dem Weg herauskam. Ausführliche Informationen zu den Bedingungen finden Sie unter This God Site Eine Schnittstelle, in der nur eine abstrakte Methode definiert ist. Diese IF scheint ein Zuweisungsziel für Lambda-Ausdrücke und Methodenreferenzen zu sein (obwohl ich sie in meinem Beitrag noch nicht behandelt habe). Wenn Sie also Java 8-Elemente wie Lambda verstehen möchten, ist das Verständnis der funktionalen IF unerlässlich.

Wie ich geschrieben habe, sind die Bedingungen, um eine funktionierende IF zu werden, einfach, sodass Sie Ihre eigenen erstellen können, jedoch in Java 8 ・ Lieferant ・ ・ ・ Gibt einen Wert ohne Argument zurück -Konsument: Es gibt ein Argument und es wird kein Wert zurückgegeben (etwas wird getan). Die, die im vorherigen Beispiel herauskam. ・ Prädikat ・ ・ ・ Gibt mit Argumenten true / false zurück ・ Funktion ・ ・ ・ Gibt einen beliebigen Typ mit einem Argument zurück (einige sind für primitive Typen) Es scheint, dass es verschiedene Standardfunktions-IFs wie bietet Für Neulinge im Entwicklungsprojekt ist es möglicherweise besser, das bereits als Standard bereitgestellte zu wählen, als es selbst zu erstellen. Daher muss möglicherweise nicht "Was ist diese ursprüngliche funktionale IF" angegeben werden.

Recommended Posts

Java 8 studieren (Lambda-Ausdruck)
[Java] Lambda-Ausdruck
Java Lambda Ausdruck
Variationen von Java-Lambda-Ausdrücken
Java 8 Lambda-Ausdruck Feature
Java Lambda Ausdruck [Notiz schreiben]
Überprüfen Sie java8 ~ Lambda Typ ~
Wieder Java-Lambda-Ausdruck
Java studieren ―― 3
Java studieren ―― 9
[Java] Funktionsschnittstelle / Lambda-Ausdruck
Java studieren ―― 4
Java studieren -5
Java # 0 studieren
Java8-Stream, Zusammenfassung des Lambda-Ausdrucks
Java studieren ②
Java studieren ―― 7
Java studieren ―― 2
Java studieren ①
Java studieren -10
Java Basic Learning Content 9 (Lambda-Ausdruck)
Was ist ein Lambda-Ausdruck (Java)
Java 8 studieren (optional)
Java9 studieren (jShell)
Hallo Java Lambda
Java 8 studieren (Stream)
Lassen Sie uns nun den Java-Lambda-Ausdruck rekapitulieren
Java 8 studieren (Sammler / Sammler)
Quarkus rettet Java Lambda! ??
Verstehen Sie Java 8 Lambda-Ausdrücke
Java 8 studieren (siehe Methode)
Verwendung der Java-API mit Lambda-Ausdrücken
Über Java-Lambda-Ausdrücke
Java studieren ~ Teil 8 ~ Besetzung
Java 8 startet jetzt ~ für jeden und Lambda-Ausdruck ~
Einführung in den Lambda-Stil
Erläutern Sie Java 8-Lambda-Ausdrücke
Injektion von Java-Tabellenausdrücken
Zusammenfassung der regulären Ausdrücke von Java
Überdenken des Entwurfsmusters mit Java8 Lambda-Ausdruck & Stream - Befehlsmuster -
Erste Schritte mit älteren Java-Ingenieuren (Stream + Lambda)
Überdenken von Entwurfsmustern mit Java8-Lambda-Ausdrücken und Stream - Null-Objektmuster -
Überdenken des Java8-Lambda-Ausdrucks- und Stream-Entwurfsmusters - Muster der Vorlagenmethode -
[Java] Einführung in den Lambda-Ausdruck
Was ist ein Lambda-Ausdruck?
Weisen Sie Variablen Java8-Lambda-Ausdrücke zu und verwenden Sie sie erneut
Überdenken des Java8-Lambda-Ausdrucks- und Stream-Entwurfsmusters - Muster der Verantwortungskette -
Java # 6 studieren (Wie man Blöcke schreibt)
[Einführung in Java] Über Lambda-Ausdrücke
Über Lambda, Stream, LocalDate von Java8
Ist Java unter AWS Lambda langsam?
Hallo Welt mit AWS Lambda + Java
Versuchen Sie einen If-Ausdruck in Java
Java
Java 8 studieren (StaticIF und Standardmethode)
Java 8 studieren (String Joiner und Join)
Java
Java9 studieren (dropWhile, takeWhile und Stream.ofNullable)
Der Ursprung von Java-Lambda-Ausdrücken