<p>Java中的上下界通配符是指在泛型类型参数中使用特殊的符号来限制泛型类型的使用范围。上界通配符使用extends关键字,表示泛型类型参数必须是指定类型的子类或同类;下界通配符使用super关键字,表示泛型类型参数必须是指定类型的父类或同类。</p>
<p>例如,假设我们有一个泛型类Box<T>,其中T表示存放在箱子里的物品的类型。如果我们想要定义一个方法,只接受能放进箱子里的水果,而不接受其他类型的食物。我们可以使用上界通配符来定义泛型类型参数:</p>
<pre><code class="language-java">public void addFruit(Box&lt;? extends Fruit&gt; box, Fruit fruit) {
    box.put(fruit);
}
</code></pre>
<p>这里的“? extends Fruit”表示泛型类型参数必须是Fruit或其子类。这样,在使用addFruit方法时,我们可以传入任何类型的Box<Fruit>、Box<Apple>、Box<Banana>等等。</p>
<p>类似地,如果我们想要定义一个方法,只接受能装满箱子的水果或其父类的类型,我们可以使用下界通配符来定义泛型类型参数:</p>
<pre><code class="language-java">public void fillBox(Box&lt;? super Fruit&gt; box, Fruit fruit) {
    box.put(fruit);
}
</code></pre>
<p>这里的“? super Fruit”表示泛型类型参数必须是Fruit或其父类。这样,在使用fillBox方法时,我们可以传入任何类型的Box<Object>、Box<Food>、Box<Fruit>等等</p>
如何理解java中的上下界泛型通配符

原文地址: https://www.cveoy.top/t/topic/chm2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录