suchen
HeimJavajavaLernprogrammWarum funktioniert eine Java-Methodenreferenz mit einem Rückgabewert mit der „Consumer'-Schnittstelle?

Why Does a Java Method Reference with a Return Value Work with the `Consumer` Interface?

Warum eine Java-Methodenreferenz mit Rückgabetyp mit der Verbraucherschnittstelle übereinstimmt

Problem

Bedenken Sie den folgenden Codeausschnitt:

Consumer<string>         lambda1 = s -> {};
Function<string string> lambda2 = s -> s;

Consumer<string>         lambda3 = LambdaTest::consume; // but s -> s doesn't work!
Function<string string> lambda4 = LambdaTest::consume;</string></string></string></string>

Gemäß der Verbraucherschnittstelle ist es definiert als void Accept(T t); Daher könnte man über die Zuweisung von Lambda3 verwirrt sein, da die Methode „consume“ einen String zurückgibt. Überraschenderweise wird auch Lambda4 zugewiesen.

Erklärung

Dieses Szenario wird auf die flexible Gestaltung von Methodenreferenzen in Java zurückgeführt. Es ermöglicht die Anpassung einer Methode an eine funktionale Schnittstelle auf die gleiche Weise wie der direkte Aufruf der Methode. Mit anderen Worten, man kann jede Methode aufrufen, die einen Wert zurückgibt, und den zurückgegebenen Wert ignorieren.

Lambda-Ausdrucksunterscheidung

Lambda-Ausdrücke gibt es in zwei Formen:

  1. ( args) -> Ausdruck: Wertkompatibel, wenn der Ausdruck einen Wert ergibt.
  2. (args) -> { Anweisungen* }: Void kompatibel, wenn kein Codepfad versucht, einen Wert zurückzugeben.

Der Ausdruck s -> s ist nicht void-kompatibel, da s keine Anweisung ist. Allerdings ist s -> s.toString() kann sein, da Methodenaufrufe Anweisungen sind.

Kompatible Formen

Ausdrücke, die als Anweisungen verwendet werden können (gemäß Java-Sprachspezifikation §14.8), umfassen:

  • Methodenaufrufe
  • Inkrementieren/Dekrementieren Operatoren
  • Zuweisungen
  • Ausdrücke zur Erstellung von Klasseninstanzen

Einschränkung

Es ist wichtig zu beachten, dass die Form (arg) -> methodReturningVoid(arg) ist die einzige Ausdrucksform, die nicht mit Werten kompatibel ist.

Das obige ist der detaillierte Inhalt vonWarum funktioniert eine Java-Methodenreferenz mit einem Rückgabewert mit der „Consumer'-Schnittstelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.