Java Generics 简明教程
Java Generics - Upper Bounded Wildcards
问号 (?) 代表通配符,在泛型中表示未知类型。有时,您可能希望限制可传递到类型参数的类型种类。例如,运算数字的方法可能只希望接受 Integer 实例或其超类,如 Number。
要声明上限通配符参数,请按顺序列出 ? 及 extends 关键字,后跟其上限。
Example
以下示例说明了如何使用 extends 指定上限通配符。
package com.tutorialspoint;
import java.util.Arrays;
import java.util.List;
public class GenericsTester {
public static double sum(List<? extends Number> numberlist) {
double sum = 0.0;
for (Number n : numberlist) sum += n.doubleValue();
return sum;
}
public static void main(String args[]) {
List<Integer> integerList = Arrays.asList(1, 2, 3);
System.out.println("sum = " + sum(integerList));
List<Double> doubleList = Arrays.asList(1.2, 2.3, 3.5);
System.out.println("sum = " + sum(doubleList));
}
}
这会产生以下结果 −