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.
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 können zwei Formen annehmen:
Methodenreferenzen sind eine weitere Möglichkeit, funktionale Schnittstellen zu definieren. Allerdings können nicht alle Methoden als Methodenreferenzen mit Consumer verwendet werden. Im Einzelnen:
Die einzige Ausdrucksform, die nicht wertkompatibel ist, ist (arg) -> methodReturningVoid(arg). Dies liegt daran, dass kein Wert zurückgegeben wird.
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!