コーデしてみた
double temp=0;
List list=new ArrayList();
list.add(1.1);
temp+=list.get(0); //error occurs here
発生したエラーは以下の通り
二項演算子 '+' のオペランドの型が正しくありません
最初のタイプ: ダブル
2 番目のタイプ: オブジェクト
リストに temp 値と double 値を追加するにはどうすればよいですか?
私が好むプログラミング言語は Java です。
コーデしてみた
double temp=0;
List list=new ArrayList();
list.add(1.1);
temp+=list.get(0); //error occurs here
発生したエラーは以下の通り
二項演算子 '+' のオペランドの型が正しくありません
最初のタイプ: ダブル
2 番目のタイプ: オブジェクト
リストに temp 値と double 値を追加するにはどうすればよいですか?
私が好むプログラミング言語は Java です。
プリミティブ ラッパー クラス Double を使用する必要があります。
List<Double> list=new ArrayList<Double>();
list.add(new Double(1.1));
    でプログラミングするときは、 、などの型に常に使用する必要がありGeneric typeます。CollectionsListArrayListJava 1.5+
raw typeリストを使用すると、メソッドList.get(0)は常に型を提供しますObject。これを機能させるには、型をキャストする必要があります。
したがって、現在のコードにキャストを追加することもできますがDouble、これは絶対に悪い考えです。
または、次genericのバージョンの List を使用する必要があります。
List<Double> list=new ArrayList<Double>();
list.add(1.1);
値1.1は ですが、doubleに変換しなくても直接追加できることに注意してくださいDouble。これは、という機能によるものJavaですAuto Boxing。
Java では、参照にdouble値を格納すると、値は自動的に にボックス化されます。逆の場合は、つまり from toと呼ばれます。DoubledoubleDoubleUnboxingDoubledouble
そのため、次の場合: -
temp+=list.get(0);
の値list.get(0)はタイプDoubleです。そして、doubleプリミティブ型で演算を行っているため、その値は自動的boxedにdoubleになり、加算演算が行われます。
ジェネリック型を定義しない場合。リストはオブジェクトを返します。つまり、キャストする必要があります。
temp+=(Double) list.get(0);
リストの宣言でジェネリック型を直接定義する方が簡単ですが、次のようになります。
List<Double> list=new ArrayList();
補足:
Doubleこれを機能させるには、代わりにを使用する必要がありますdouble。doubleはプリミティブ型であるDoubleのに対し、はリストに格納できるJavaオブジェクトであるため