为什么java.util.function没有为所有原始类型定义专用的功能接口?

时间:2014-07-11 07:40:10

标签: java functional-programming java-8

Java 8在包java.util.function中提供了几个功能接口。

对于每个基本函数(Function,Consumer,Predicate,Supplier ...),还有其他定义的类型参数专用于以下基本类型:double,int,long。

这个问题与这些界面的动机有关:Why are there primitive functions like DoubleFunction in Java 8

但为什么不覆盖所有原始类型(例如浮点数丢失)?

1 个答案:

答案 0 :(得分:9)

这是为了防止API大小爆炸而决定的。被迫引入原始专业化已经是一个痛点,因此妥协只是专注于基本类型,longdouble,另外int作为最突出的原始类型:数组索引的类型和整数文字。所有其他类型都可以升级为这些类型。

lambda-dev 邮件列表的this post中,您可以阅读Brian Goetz的官方声明。