谁能向我解释为什么以下代码不起作用?
我试图了解 Java8 的新特性并解决了 BerlinClock Kata。在此期间,我必须解析格式的字符串"hh:mm:ss"
- 我想使用流并编写了以下代码。
import java.util.Arrays;
private Integer[] parseTime (String time){
Integer[] hhmmss = (Integer[]) Arrays.stream(time.split(":"))
.map(s->Integer.parseInt(s)).toArray();
return hhmmss;
}
但是运行时系统(我认为)抱怨(Integer[])
无法完成显式类型转换。
据我了解,该Arrays.stream(time.split(":"))
部分返回 a Stream<String>
,然后map(s->Integer.parseInt(s))
将其转换为Stream<Integer>
,然后toArray()
生成一个Object[]
. 现在Integer[]
应该可以进行类型转换,因为中间流具有Integer
类型参数。
请注意,我知道如何在不使用类型转换的情况下解决此问题
int[] hhmmss= Arrays.stream(time.split(":")
.mapToInt(Integer::parseInt).toArray();
并将类型签名相应地更改为int[] parseTime
. 但我不明白为什么类型转换有问题。