Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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_Java_Java 8_Functional Interface - Fatal编程技术网

这是什么意思?JAVA

这是什么意思?JAVA,java,java-8,functional-interface,Java,Java 8,Functional Interface,其中a、b、c是具有a、b和c参数的方法。e、 g:返回某物的方法A、b、c 我的问题是,在实践中,这个函数接口是什么部分,对我来说,它很混乱。它返回一个供应商,然后提供三参数方法实现a、b、c->{} 通常,Java中的所有方法参数都会在调用方法时立即进行计算 这意味着,在orElseGeta,b,c->{}的假设情况下,无论是否需要,都将始终创建该方法。但由于只有在没有其他价值存在的情况下才需要这种方法,因此拥有中间供应商意味着只有在实际需要时才创建这种方法 由于在没有价值存在的情况下使用的

其中a、b、c是具有a、b和c参数的方法。e、 g:返回某物的方法A、b、c

我的问题是,在实践中,这个函数接口是什么部分,对我来说,它很混乱。

它返回一个供应商,然后提供三参数方法实现a、b、c->{}

通常,Java中的所有方法参数都会在调用方法时立即进行计算

这意味着,在orElseGeta,b,c->{}的假设情况下,无论是否需要,都将始终创建该方法。但由于只有在没有其他价值存在的情况下才需要这种方法,因此拥有中间供应商意味着只有在实际需要时才创建这种方法


由于在没有价值存在的情况下使用的价值可能会产生任意的成本,因此供应商可能会节省大量时间。在您的情况下,创建一个供应商或创建一个lambda在成本方面可能大致相同,两者之间不会有太大区别。但是,在其他情况下,获取值可能涉及数据库查找、字符串连接等,在这些情况下,仅在实际需要时执行这些操作可能是一个巨大的好处。

它看起来像是一个返回函数的函数。没有参数的函数返回具有三个参数的函数,这些参数可以执行某些操作,但是什么也不返回,这是一个lambda返回一个lambda;您可以用{}重写它,然后返回以现在看得更清楚。。;当您对函数接口、lambda、方法引用等感到困惑时,最好先学习这些概念。然后你可以查看API文档,看看什么返回什么。对于lambda表达式,我们可以肯定的说实例化一点代价都没有。对于像a,b,c->{}这样的非捕获lambda表达式,它几乎为零。无论实例化的成本有多高,供应商的实例化都有相同的成本,因此使用orElseGet->a,b,c->{}而不是orElsea,b,c->{}不会节省任何成本。在这种情况下,是的。答案的这一部分是更一般的意思,但我要澄清一下。谢谢你们两位的回答!!
something().orElseGet(() -> (a, b, c) -> {})
                   // ^----this part------^