


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:
- ( args) -> Ausdruck: Wertkompatibel, wenn der Ausdruck einen Wert ergibt.
- (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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

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
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.