我有setter方法:鑄造不起作用(INT []翻番[])
public void setValues(int[] values){
this.values = (double[])values;
}
和Java不允許我這樣做。我收到關於不可轉換類型的消息。我知道我可以使用整數和doubleValue()方法,但上面的解決方案應該工作(我認爲)。
那麼,怎麼了?
我有setter方法:鑄造不起作用(INT []翻番[])
public void setValues(int[] values){
this.values = (double[])values;
}
和Java不允許我這樣做。我收到關於不可轉換類型的消息。我知道我可以使用整數和doubleValue()方法,但上面的解決方案應該工作(我認爲)。
那麼,怎麼了?
從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));
你不能大規模投橫跨原語的整個陣列。您需要通過元素中檢索數組的時候投或轉換它的元素:
for(int i=0; i<values.length; i++){
this.values[i] = values[i]; //int-to-double cast implicit
}
這是整型數組,不是int,你可以創建新的雙陣列和複製與個別投每個值。 – Epsilon
你不能隨意施放陣列。 –
你不能那樣做。 –