文档

Java™ 教程
隐藏目录
下边界通配符
教程:学习Java语言
课程:泛型(已更新)
章节:通配符

下界通配符

上界通配符部分中,我们介绍了上界通配符可以限制未知类型为特定类型或该类型的子类型,并且使用extends关键字表示。类似地,下界通配符可以限制未知类型为特定类型或该类型的超类型

使用通配符字符('?'),后面跟随super关键字和其下界来表示下界通配符:<? super A>


注意: 您可以为通配符指定上界,也可以指定下界,但不能同时指定两者。

假设您想编写一个将Integer对象放入列表的方法。为了最大化灵活性,您希望该方法适用于List<Integer>List<Number>List<Object>,即能够保存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);
    }
}

通配符使用指南部分,我们提供了关于何时使用上界通配符和何时使用下界通配符的指导。


上一页: 无限通配符
下一页: 通配符和子类型