セッターメソッドがあります:
public void setValues(int[] values){
this.values = (double[])values;
}
Javaは私にそれを許可しません。変換できない型に関するメッセージが表示されます。Integers と doubleValue() メソッドを使用できることはわかっていますが、上記のソリューションは機能するはずです (と思います)。
それで、何が問題なのですか?
からint
へのキャストは、 からへdouble
のキャストとは異なります。配列はオブジェクトであるため、後者は機能しません。したがって、互換性のないオブジェクトが 2 つあります。キャストは実行時に確実に失敗するため、コンパイラはキャストを許可せず、コンパイラ エラーが発生します。int[]
double[]
int[]
残念ながら、 からに直接変換する方法はありませんdouble[]
。そのためにループを書く必要があります。
for (int i = 0; i < values.length; ++i) {
this.values[i] = values[i];
}
または、GuavaDoubles.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
}