为什么在Java 8中有像DoubleFunction这样的原始函数

我只是看了一下新的Java 8

函数包,想知道为什么会有类似的接口

  • DoubleFunction
  • IntFunction
  • LongFunction

这也

延长Function。这是否意味着我将无法通过要求a的Function<T,Int>地方IntFunction<T>,反之亦然?这同样适用于*Block*Supplier*UnaryOperator

我看到的优点是,不必null在返回原语时进行检查,但是缺点列表似乎要长得多

回答:

此问题与以下事实有关:Java中的原始类型未统一为可替代Object,并且具有通用类型擦除。

使用Function<T, Integer>代替而不是IntFunction<T>最后一个满足时有两个缺点:

  • 每个返回的内容int都用盒装-意味着更大的内存占用;
  • 每个返回的内容Integer都会获得自动运行时检查(可以对其进行优化,但是是的。。。);

请注意,Java中的收集框架存在这类问题,导致人们编写了一个名为Trove的整个库,该库避开了通用接口,而支持每种原始类型的专用收集类型。

以上是 为什么在Java 8中有像DoubleFunction这样的原始函数 的全部内容, 来源链接: utcz.com/qa/407042.html

回到顶部