static double sumOfNumberList(List<? extends Number> numbers) { //upper bound wildcard
double sum=0.0;
for(Number number:numbers) {
sum+=number.doubleValue();
}
return sum;
}
Accoding to javadocs,
Numberis:
"The abstract class Number is the superclass of platform classes representing numeric values that are convertible to the primitive types byte, double, float, int, long, and short. "List<? extends Number> numbersThis part means any elements that extends
Numberis accepted.
static void addACoupleOfValues(List<? super Number> numbers) { //lower bounded wildcard
numbers.add(1);
numbers.add(1.0);
numbers.add(1.0f);
numbers.add(1l);
}
So,
List<? super Number> numbersThis part means any element that is super type of
Number. So in the code,int,double,float,longare all accepted.