1

セッターメソッドがあります:

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

Javaは私にそれを許可しません。変換できない型に関するメッセージが表示されます。Integers と doubleValue() メソッドを使用できることはわかっていますが、上記のソリューションは機能するはずです (と思います)。

それで、何が問題なのですか?

4

2 に答える 2

7

から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));
于 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 に答える