字符串流上的toArray返回Object []

时间:2018-10-19 23:44:48

标签: java arrays generics

我有以下代码:

Stream<String> stringStream = Stream.of("a", "b", "c");
Object[] arr = stringStream.toArray();

为什么arr不是String[]

1 个答案:

答案 0 :(得分:3)

Stream的toArray函数自然返回一个Object[]

这是函数的签名:

<A> A[] toArray(IntFunction<A[]> generator)

您可能会注意到有一个 generator 作为参数。
IntFunction<A[]> generator的目的是将整数(即数组的大小)转换为新数组。

要获取String[],您可以执行以下操作:

Stream<String> stringStream = Stream.of("a", "b", "c");
String[] arr = stringStream.toArray(size -> new String[size]);

有关更多信息,您可以咨询Docs

希望这会有所帮助!