Java 8 Verbraucher und Nebenwirkungen

8

Ich bin neu in Java 8. Ich stieß auf Consumer Java Doc und es heißt: "Es wird erwartet, dass der Verbraucher über Nebenwirkungen arbeitet." Könnte jemand bitte erklären, warum es so gesagt wird?

    
user6348242 18.05.2016, 00:13
quelle

3 Antworten

7

Der Konsument hat die Methode accept mit der folgenden Signatur

%Vor%

Die Methode verwendet t als Eingabe und gibt nichts zurück (void). Daher können Sie nichts zurückgeben und den Methodenaufruf durch den zurückgegebenen Wert ersetzen.

Ein Beispiel für einen Nebeneffekt wäre eine Druckanweisung,

%Vor%

foreach nimmt einen Verbraucher als Argument. Wenn Sie darüber nachdenken, ist die einzige nützliche Sache, die Sie mit einer solchen Methode tun können, die Welt zu verändern (dh einen Zustand mutieren).

Das Gegenteil davon wäre eine reine Funktion , eine Funktion, die keinen Zustand mutiert, sondern eine Eingabe benötigt und gibt etwas zurück, zum Beispiel

%Vor%

fn hat hier keine Nebenwirkungen (es mutiert nichts), es empfängt eine ganze Zahl und gibt sein Quadrat friedlich zurück.

    
Sleiman Jneidi 18.05.2016 00:22
quelle
4

Nach dem Consumer javadoc , a Consumer muss mit einer Methode deklariert werden, die die Signatur void accept(T) hat. Daher kann die Methode keinen Wert zurückgeben. Wenn es keine Nebenwirkung hätte, hätte es keinerlei Auswirkungen.

    
hexafraction 18.05.2016 00:16
quelle
0

Die meisten funktionalen Schnittstellen sind nur solche funktionalen Schnittstellen, was bedeutet, dass sie eine Eingabe akzeptieren, einige Berechnungen durchführen und eine Ausgabe zurückgeben. Sie sollen keinen Zustand ändern. Consumer ist die Ausnahme, da keine Werte zurückgegeben werden. Sein Zweck besteht einzig darin, einen Zustand zu verändern.

    
shmosel 18.05.2016 00:17
quelle

Tags und Links