这个顺序看起来很奇怪,因为在常规 Java 中总是首先指定返回类型。如:
public static double sum(Iterable<Number> nums) { ... }
那么,为什么在 Function 和 BiFunction 类中选择以相反的方式指定它们呢?如:
interface Function<T,R>
interface BiFunction<T,U,R>
我不是在这里询问哪个更好的意见,但具体来说:
a) 选择一个订单而不是另一个订单是否有任何技术或其他(非风格)好处?还是随意的选择?
b) 是否有人知道权威来源的任何书面解释或任何陈述的原因,为什么选择一个而不是另一个?
顺便说一句:如果扩展到更高的位数,这个顺序似乎更加奇怪。例如,假设的 QuadFunction:
interface QuadFunction<A,B,C,D,R> { ... }
(在撰写本文时,库中的最高元数是 2 - 即 BiFunction。)
见:http: //download.java.net/jdk8/docs/api/java/util/function/package-summary.html