# 较低的有界通配符

> 原文： [https://docs.oracle.com/javase/tutorial/java/generics/lowerBounded.html](https://docs.oracle.com/javase/tutorial/java/generics/lowerBounded.html)

[上限有界通配符](upperBounded.html)部分显示上限有界通配符将未知类型限制为该类型的特定类型或子类型，并使用 `extends` 关键字表示。以类似的方式，_ 下限 _ 通配符将未知类型限制为该类型的特定类型或 _ 超类型 _。

使用通配符（'`？`'）表示下限通配符，后跟 `super` 关键字，然后是 _ 下限 _：`&lt ;？超级 A&gt;` 。

* * *

**Note:** You can specify an upper bound for a wildcard, or you can specify a lower bound, but you cannot specify both.

* * *

假设您要编写一个将 `Integer` 对象放入列表的方法。为了最大限度地提高灵活性，您希望该方法适用于 `List&lt; Integer&gt;` ，`列表&lt; Number&gt;` 和 `List&lt; Object&gt;` - 任何可以保存`整数`值的东西。

编写适用于 `Integer` 列表的方法和 `Integer` 的超类型，如 `Integer` ， `Number` 和`对象`，你要指定 `List&lt;？超级整数&gt;` 。术语`列表&lt;整数&gt;` 比 `List&lt;？更具限制性超级整数&gt;` 因为前者仅匹配 `Integer` 类型的列表，而后者匹配任何类型的列表 `Integer` 的超类型。

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

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

```

[通配符使用指南](wildcardGuidelines.html)部分提供了有关何时使用上限有界通配符以及何时使用下限有界通配符的指导。