有下限的通配符限制了类型必须是指定的类型或者是指定类型的父类。有下限的通配符声明语法是,一个问号(?),紧跟 super 关键字,后面跟下限的类型: super A>。
注意,你可以指定一个有上限的通配符,或者指定一个有下限的通配符,但是不能两个限制同时指定。
假设你需要一个方法,方法中接受 Integer 类型的 List。为了使方法更加灵活,你可能需要方法同时适用于
List、 List、 和 List,这些 List
都可以存放 Integer 类型的值。
为了让 List 可以存放 Integer 和 Integer 的父类,可以这样定义 List super
Integer>。记住,List 比 List super Integer>
的限制更为严格,前者只允许存放 Integer 类型,后者可以存放 Integer 及 Integer 的父类。
下面的代码演示了将数字 1 到 10 添加到 List 中的方法:
public static void addNumbers(List super Integer> list) {
for (int i = 1; i <= 10; i++) {
list.add(i);
}
}