在Java中,IntFunction,LongFunction等特殊接口的用途是什么?

Sak*_*hta 5 java java-8

同样,我们有不同的接口Int*,Double*,Long*对应的Function,Supplier,Predicate.

在我看来,使用这些特殊接口的唯一好处是使代码更具可读性并强制其客户端仅使用该特定类型作为输入.

但除此之外,我是否遗漏了一些其他用例?

Era*_*ran 6

这些接口的目标是允许直接使用原始类型.这节省了自动装箱和自动拆箱,因此使得这些接口(以及相关的IntStream,LongStream并且DoubleStream依赖于它们)更加有效.

例如,代替使用一个Function<Integer,R>具有一个接受的方法Integer,并产生类型的结果R,可以使用一个IntFunction<R>具有接受一个的方法int,并产生类型的结果R.如果你传递一个int到该功能,您避免,如果你通过了相同的,将采取地方拳击intFunction<Integer,R>的方法.