转换不起作用(int [] to double [])

时间:2013-10-17 22:00:46

标签: java casting

我有setter方法:

public void setValues(int[] values){
    this.values = (double[])values;        
}

并且Java不允许我这样做。我收到有关不可转换类型的消息。我知道我可以使用Integers和doubleValue()方法,但上面的解决方案应该可以工作(我认为)。

那么,出了什么问题?

2 个答案:

答案 0 :(得分:7)

int转换为double与从int[]转换为double[]不同。后者无法工作,因为数组是一个对象。所以你有2个不兼容的对象。强制转换在运行时肯定会失败,因此编译器不允许强制转换,并且会给你编译错误。

很遗憾,没有直接的方法可以从int[]转换为double[]。你必须为此编写循环。

for (int i = 0; i < values.length; ++i) {
    this.values[i] = values[i];
}

或者,如果您可以使用Guava,则可以使用Doubles.toArray方法:

this.values = Doubles.toArray(Ints.asList(values));

答案 1 :(得分:3)

您无法跨基元批量转换整个数组。您需要在检索数组时进行转换或按元素转换元素:

for(int i=0; i<values.length; i++){
    this.values[i] = values[i]; //int-to-double cast implicit
}