のために働いていない私が何をしようとしていますものです:オートボクシングとアンボクシングルールsum = sum+ t;
を1としてオートボクシング/オートアンボクシングはここで有界Typeパラメータ
class MyNumbers<T extends Number>{
private T[] array;
MyNumbers(T[] array){
this.array = array;
}
public void setArray(T[] array){
this.array = array;
}
public T[] getArray(){
return this.array;
}
public double avarage(){
double avg =0.0;
double sum =0.0;
for(T t: array){
sum += t.doubleValue(); // working
sum = sum+ t; // not working
}
return sum/array.length; }
}
動作するはずです。既にNumberクラスで拡張されているTとしては機能しません。
public class BoundedTypeParam{
public static void main(String [] args){
Integer[] ints = {1,2,3,4,5,6};
MyNumbers<Integer> stats4Ints = new MyNumbers<>(ints);
System.out.println("Avg is same : "+ stats4Ints.avarage());
}
}
私が行方不明ですどれルール/概念を:ここで
は、私は、次のタイプにしようとするものです。
PS。私は認識可能な型、消去で認識しています
「動作していません」と表示されていても、何を観察しているかはわかりません。コンパイル時の問題?実行時の例外?他に何か?理想的には、[mcve]を提供しますが、少なくとも*明確なエラー記述を提供してください。 –
あなたは 'sum + t'が何を期待しているのか不明です、btw。 't'が' Number'をタイプしていればうまくいくと思いますか? –
コンパイラは、ジェネリック "T"のターゲットプリミティブタイプを認識していないため、コンパイルしません。そして演算子 '+'はプリミティブデータまたは 'String'にcastintigを必要とします。 –