下界通配符

上界通配符部分显示了上限通配符将未知类型限制为特定类型或该类型的子类型,并使用extends关键字表示。以类似的方式,“下界”通配符将未知类型限制为特定类型或该类型的“super类型”。

下限通配符使用通配符('?')表示,后跟super关键字,然后是其“下界”:\<? super A\>

Note:

您可以指定通配符的上限,也可以指定下限,但不能同时指定两者。

假设您要编写一个将Integer个对象放入列表的方法。为了最大程度地提高灵 Active,您希望该方法适用于List\<Integer\>List\<Number\>List\<Object\> -可以容纳Integer值的任何东西。

要编写适用于Integer列表和Integer的超类型(例如IntegerNumberObject)的方法,应指定List\<? super Integer\>。术语List\<Integer\>List\<? super Integer\>更具限制性,因为前者仅匹配Integer类型的列表,而后者匹配Integer的超类型的任何类型的列表。

下面的代码将数字 1 到 10 添加到列表的末尾:

public static void addNumbers(List<? super Integer> list) {
    for (int i = 1; i <= 10; i++) {
        list.add(i);
    }
}

通配符使用准则部分提供有关何时使用上限通配符以及何时使用下限通配符的指南。