почему нет autoboxing в строке sum + = nums [i] .doubleValue(). u может видеть, что nums [i] находится в объектной форме, поэтому не может просто написать sum + = nums [i], зачем нужен doubleValue(), который является ручным способом автобоксинга и распаковки. я успешно скомпилировал программу, в которой число в форме объекта возвращается из метода и автоматически назначается как double.autoboxing в generic, может autoboxing работать с объектом
public class genericbound<T extends Number> {
T[] nums;
genericbound(T[] o){
nums=o;
}
double average(){
double sum=0.0;
for(int i=0; i<nums.length; i++)
sum +=nums[i].doubleValue();
return sum/nums.length;
}
}
class BoundsDemo{
public static void main(String args[]){
Integer inums[]={1,2,3,4,5};
genericbound<Integer> iob= new genericbound<Integer>(inums);
double v=iob.average();
System.out.println("iob average is"+v);
Double dnums[]={1.1, 2.2, 3.3, 4.4, 5.5 };
genericbound<Double> dob= new genericbound<Double>(dnums);
double w= dob.average();
System.out.println("dob average is "+w);
}
}
спасибо, но, я удалил «расширение номера» внутри программы и попытался скомпилировать, но все еще ошибку. где, как и в других аналогичных типах программ, есть aa aa –
спасибо, но я удалил «расширение номера» внутри программы и попытался скомпилировать, но все еще ошибку. где в качестве другого аналогичного типа программы см. эту строку int v = iob.getob(); эта программа работает класса Gen T акушера; Gen (T o) { ob = o; } T getob() { return ob; } класс GenDemo { public static void main (String args []) { Gen iob = new Gen (88); int v = iob.getob(); System.out.println ("value" + v); } } –