Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.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中省略了compose and identity方法?_Java_Java 8 - Fatal编程技术网

为什么在双功能接口Java 8中省略了compose and identity方法?

为什么在双功能接口Java 8中省略了compose and identity方法?,java,java-8,Java,Java 8,我刚开始阅读Java 8概念,但在阅读过程中,我发现了一些不足以说服我的东西,那就是在BiFunction接口中省略了compose和identity方法。从Java 8文档中我可以看到,Bifunction似乎与Function接口相同,但它需要额外的参数,因此在这种情况下,Bifunction应该具有与Function接口相同的所有特性,但事实并非如此 因此,有人能帮我找到省略这些方法的原因吗?Function.identity()返回接受单个参数并返回该参数的函数 一个BiFunction

我刚开始阅读Java 8概念,但在阅读过程中,我发现了一些不足以说服我的东西,那就是在
BiFunction
接口中省略了
compose
identity
方法。从Java 8文档中我可以看到,
Bifunction
似乎与
Function
接口相同,但它需要额外的参数,因此在这种情况下,
Bifunction
应该具有与
Function
接口相同的所有特性,但事实并非如此

因此,有人能帮我找到省略这些方法的原因吗?

Function.identity()
返回接受单个参数并返回该参数的
函数

一个
BiFunction
有两个参数,那么哪个参数将
identity()
返回

类似地,
compose()
用于通过将第一个
函数的结果作为第二个
函数所期望的单个参数进行传递来组合两个
函数

对于具有两个参数的函数,您将如何实现类似的功能?第一个函数将产生一个值,但第二个函数需要两个参数

通过将
BiFunction
的结果作为
函数
的参数传递,您仍然可以将
双函数
函数
组合。为了这个目的你有

例如,假设您有一个
双功能
,如下所示:

BiFunction<Integer,Integer,Integer> mul = (x,y) -> x*y;
BiFunction<Integer,Integer,Integer> mulPlus5 = mul.andThen(plus5);
并称之为:

int result = mulPlus5.apply(2,3); // this will multiply 2*3 and add 5, resulting in 11.

您不能先应用
plus5
(或某些
BiFunction
作为替代)然后将其结果传递给
mul
,因为
mul
接受两个参数,而应用
plus5
(或任何其他
函数
双功能
)将产生一个值。

感谢Eran,我认为用同一方法进行观察是合适的,你能帮我确定写作方法的案例吗?所以在这种情况下,即使是和该方法也应该被省略,对吗?你能举个例子,为写作做更多的阐述吗method@srikzen
然后
没有被省略,因为它在其参数处接受一个
函数
,您可以在
双功能
的结果上应用该
函数
compose
的工作方式与此相反—您首先将要应用的函数传递给它,然后将函数的结果反馈给调用它的函数。对于双函数你不能这样做,因为双函数需要两个参数。我不同意关于恒等式的前提。Java工程师实现Bifunction.returnFirst()和Bifunction.retunSecond()或任何最适合他们的名称是否会如此困难?文档:“
identity()
-返回一个始终返回其输入参数的函数”如何处理两个输入?对于
compose
int result = mulPlus5.apply(2,3); // this will multiply 2*3 and add 5, resulting in 11.