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

Mr *_*edi 1 java casting

我有setter方法:

public void setValues(int[] values){
    this.values = (double[])values;        
}
Run Code Online (Sandbox Code Playgroud)

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

那么,怎么了?

Roh*_*ain 7

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

不幸的是,从转换没有直接的方法int[]double[].你必须为此编写循环.

for (int i = 0; i < values.length; ++i) {
    this.values[i] = values[i];
}
Run Code Online (Sandbox Code Playgroud)

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

this.values = Doubles.toArray(Ints.asList(values));
Run Code Online (Sandbox Code Playgroud)