1

我有setter方法:

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

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

那么,怎么了?

4

2 回答 2

7

铸造 from inttodouble与铸造 from int[]to不同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));
于 2013-10-17T22:02:32.433 回答
3

您不能跨基元批量转换整个数组。您需要在检索数组或逐个元素转换它时进行转换:

for(int i=0; i<values.length; i++){
    this.values[i] = values[i]; //int-to-double cast implicit
}
于 2013-10-17T22:02:32.797 回答