相关疑难解决方法(0)

将Streams与原语数据类型和相应的包装器一起使用

在玩Java8的Streams-API时,我偶然发现了以下内容:

要将原始包装器classe对象的数组转换为Stream我只需要调用Stream.of(array).但是要转换原始数据类型的数组,我必须.of(array)从相应的包装器(类)流类调用(< - 听起来很傻).

一个例子:

final Integer[] integers = {1, 2, 3};
final int[]     ints     = {1, 2, 3};


Stream.of(integers).forEach(System.out::println); //That works just fine

Stream.of(ints).forEach(System.out::println);     //That doesn't

IntStream.of(ints).forEach(System.out::println);  //Have to use IntStream instead
Run Code Online (Sandbox Code Playgroud)


我的问题: 这是为什么?这是否与例如行为Arrays.asList()也适用于包装类数组相关?

java wrapper primitive-types java-8 java-stream

20
推荐指数
1
解决办法
1万
查看次数

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

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

对于每个基本函数(函数,消费者,谓词,供应商......),还有其他定义的类型参数专用于以下基本类型:double,int,long.

这个问题是关于这种接口的动机:为什么在Java 8中存在像DoubleFunction这样的原始函数

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

java functional-programming java-8

6
推荐指数
1
解决办法
422
查看次数

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

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

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

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

java java-8

5
推荐指数
1
解决办法
115
查看次数