关于java泛型,Function和BiFunction是两个很好地源码可以看,在过程中想想为什么BiFunction中没有compose方法,可以自己尝试去添加compose方法然后发现问题。
在BiFunction中存在3个泛型参数,分别是T,U,R(第1个参数,第二个参数,返回类型),因为apply方法限定了如此,如果BiFuncion中有compose方法,那么1种可能是Function参数,那么先进行function对T,U分别运算,但是注意得到的是同一类输出,而且输入T,U明显不是同一类型(可以是同种类型,但是只是一种情况),那么意味着function参数是不合理的。
第二种是BiFunction,那么只有一个返回值,而我们接下来的BiFunction是需要两个参数的,所以明显不行。
可以看看BinaryOperator这个函数接口。。
这里最重要的是理解前提条件,存在3个泛型参数。。这个问题对于理解泛型有非常好的帮助。