Java 8在包java.util.function
中提供了几个功能接口。
对于每个基本函数(Function,Consumer,Predicate,Supplier ...),还有其他定义的类型参数专用于以下基本类型:double,int,long。
这个问题与这些界面的动机有关:Why are there primitive functions like DoubleFunction in Java 8
但为什么不覆盖所有原始类型(例如浮点数丢失)?
答案 0 :(得分:9)
这是为了防止API大小爆炸而决定的。被迫引入原始专业化已经是一个痛点,因此妥协只是专注于基本类型,long
和double
,另外int
作为最突出的原始类型:数组索引的类型和整数文字。所有其他类型都可以升级为这些类型。
在 lambda-dev 邮件列表的this post中,您可以阅读Brian Goetz的官方声明。