【发布时间】:2016-11-01 08:04:03
【问题描述】:
给定一个方法定义:
public void create(double... values);
这个方法是这样调用的:
List<Double> values = ...;
Double[] doubles = values.toArray(new Double[0]);
create(doubles); // wont work
为什么它不起作用?
【问题讨论】:
-
重载方法 (
void create(Double... values))。Double[]和double[]不能相互转换。 -
需要手动转换
Arrays.stream(input).mapToDouble(Function.identity()).toArray()。 -
@Turing85 但是你仍然在同一个泡菜中 - 你需要在方法重载中将
Double[]转换为double[]。 -
@BoristheSpider 我说只要方法的功能未知,就没有进一步的推测是有用的
-
@helt 不要使用
Double[] doubles = values.toArray(new Double[0]),而是使用values.stream().map(Double::doubleValue).toArray()。这样你只复制一次。此外,永远不要这样做.toArray(new Xxxx[0])因为它创建一个空数组,然后丢弃它并创建一个正确大小的数组。你当然知道正确的尺寸,所以使用它。
标签: java