Heim >Java >javaLernprogramm >Wie können Methoden mit Rückgabetypen mit der Consumer-Schnittstelle von Java verwendet werden?

Wie können Methoden mit Rückgabetypen mit der Consumer-Schnittstelle von Java verwendet werden?

Barbara Streisand
Barbara StreisandOriginal
2024-11-23 04:12:13638Durchsuche

How Can Methods with Return Types Be Used with Java's Consumer Interface?

Lambda-Methodenreferenzen mit Rückgabetypkompatibilität verstehen

Lambda-Ausdrücke und Methodenreferenzen bieten alternative Möglichkeiten zum Definieren funktionaler Schnittstellen in Java. Allerdings kommt es zu Verwirrung, wenn eine Methodenreferenz mit einem Rückgabetyp mit der Consumer-Schnittstelle übereinzustimmen scheint, obwohl die Accept-Methode des Consumers einen void-Rückgabetyp hat.

Grundlage für Design

Wie Brian Goetz erklärt, Dieses Verhalten ist beabsichtigt. Es ermöglicht Entwicklern, Methoden auf die gleiche Weise an funktionale Schnittstellen anzupassen, wie sie die Methoden direkt aufrufen würden. Daher können Wert zurückgebende Methoden mit der Consumer-Schnittstelle verwendet werden, wobei der Rückgabewert ignoriert wird.

Lambda-Ausdrücke und Rückgabetypen

Lambda-Ausdrücke können zwei Formen annehmen:

  • (Argumente) -> Ausdruck: Dieses Formular ergibt einen Wert und kann daher nicht mit Leeren kompatibel sein. Beispiel: () -> { zurückkehren ""; } ist nicht void-kompatibel, während () -> {} oder () -> { zurückkehren; } sind.
  • (args) -> { Anweisungen* }: Dieses Formular enthält eine oder mehrere Anweisungen. Es ist void-kompatibel, wenn kein Codepfad versucht, einen Wert zurückzugeben. Ausnahmen, die eine normale Vervollständigung verhindern, machen solche Lambdas auch ungültig.

Methodenreferenzen und Anweisungen

Methodenreferenzen sind eine weitere Möglichkeit, funktionale Schnittstellen zu definieren. Allerdings können nicht alle Methoden als Methodenreferenzen mit Consumer verwendet werden. Im Einzelnen:

  • Methoden mit einem anderen Rückgabetyp als void können nicht als Methodenreferenzen mit Consumer verwendet werden.
  • Ausdrücke, die auch Anweisungen sind, können void-kompatibel sein. Beispiel: s -> s.toString() ist void-kompatibel, da Methodenaufrufe als Anweisungen betrachtet werden.

Ausnahmen

Die einzige Ausdrucksform, die nicht wertkompatibel ist, ist (arg) -> methodReturningVoid(arg). Dies liegt daran, dass kein Wert zurückgegeben wird.

Fazit

Die Kompatibilität von Methodenreferenzen mit Consumer hängt vom Rückgabetyp ab und davon, ob der Ausdruck als Anweisung verwendet werden kann. Das Verständnis dieses Konzepts hilft zu klären, wie Lambdas und Methodenreferenzen mit funktionalen Schnittstellen in Java interagieren.

Das obige ist der detaillierte Inhalt vonWie können Methoden mit Rückgabetypen mit der Consumer-Schnittstelle von Java verwendet werden?. 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