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?
Der Konsument hat die Methode accept
mit der folgenden Signatur
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.
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.
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.
Tags und Links java