Generics(upper bound wildcard / lower bound wildcard)

탱귤생귤·2023년 5월 9일

JAVA

목록 보기
13/20

Upper bound wildcard

	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, Number is:
"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> numbers

This part means any elements that extends Number is accepted.

Lower bound wildcard

	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> numbers

This part means any element that is super type of Number. So in the code, int,double,float,long are all accepted.

0개의 댓글