此问题与以下事实有关:Java中的原始类型未统一为可替代
Object,并且具有通用类型擦除。
使用
Function<T, Integer>代替而不是
IntFunction<T>最后一个满足时有两个缺点:
- 每个返回的内容
int
都用盒装-意味着更大的内存占用; - 每个返回的内容
Integer
都会获得自动运行时检查(可以对其进行优化,但是是的。。。);
请注意,Java中的收集框架存在这类问题,导致人们编写了一个名为Trove的整个库,该库避开了通用接口,而支持每种原始类型的专用收集类型。



