问号(?)代表通配符,代表泛型中的未知类型.有时您可能希望限制允许传递给类型参数的类型.例如,对数字进行操作的方法可能只想接受Number或其子类的实例.
要声明上限的Wildcard参数,请列出?,后跟extends关键字,接着是它的上限.
示例
以下示例说明了如何使用extends来指定上限通配符.
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[]) { ListintegerList = Arrays.asList(1, 2, 3); System.out.println("sum = " + sum(integerList)); List doubleList = Arrays.asList(1.2, 2.3, 3.5); System.out.println("sum = " + sum(doubleList)); }}
这将产生以下结果 :
输出
sum = 6.0sum = 7.0