Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 8消费者和副作用_Java_Java 8_Consumer - Fatal编程技术网

Java 8消费者和副作用

Java 8消费者和副作用,java,java-8,consumer,Java,Java 8,Consumer,我是Java 8新手,我遇到了消费者Java文档,它说,“消费者预期会通过副作用进行操作。”有人能解释一下为什么这样说吗?根据,消费者必须使用签名为void accept(T)的方法声明。因此,该方法无法返回值。如果没有副作用,它将无法执行任何效果。大多数功能接口都是功能接口,严格来说,功能接口意味着它们接受输入、进行一些计算并返回输出。他们不应该修改任何状态消费者是例外,因为它不返回任何值;其目的仅仅是修改某些状态。消费者拥有带有以下签名的方法接受 void accept(T t); 该方法

我是Java 8新手,我遇到了消费者Java文档,它说,“消费者预期会通过副作用进行操作。”有人能解释一下为什么这样说吗?

根据,消费者必须使用签名为
void accept(T)
的方法声明。因此,该方法无法返回值。如果没有副作用,它将无法执行任何效果。

大多数功能接口都是功能接口,严格来说,功能接口意味着它们接受输入、进行一些计算并返回输出。他们不应该修改任何状态<代码>消费者是例外,因为它不返回任何值;其目的仅仅是修改某些状态。

消费者拥有带有以下签名的方法<代码>接受

void accept(T t);
该方法将t作为输入,不返回任何内容(void),因此不能从中返回任何内容并用它返回的值替换方法调用

副作用的一个例子是打印语句

list.stream.foreach(System.out::println);
foreach将消费者作为论点。如果你仔细想想,你能用这种方法做的唯一有用的事情就是改变世界(例如,改变一个状态)

与之相反的是a,一个不改变任何状态的函数,它接受一个输入,然后返回一些东西,例如

Function<Integer,Integer> fn = x -> x*x;
函数fn=x->x*x;

fn
这里没有任何副作用(它不会改变任何东西),它接收一个整数并和平返回其平方

如果您不习惯函数式编程,那么这种语言对您来说就没有多大意义。其思想是,“纯”函数应该只读取其输入,只写入其返回值(因此不会有副作用-运行函数的唯一作用是获得返回值)。更改某些内容(修改数据结构、运行IO等)的函数被称为具有副作用。一个没有返回值的函数最好有副作用,否则它什么也不做。“如果它没有副作用,它就没有能力执行任何效果。”-告诉一切