泛型<? extends T> 和 <? super T>
<? extentds T> 和 <? super T> 是一个不容易理解的知识点,网上很多文章都是概念和内容的堆砌,看完之后反而让人更加疑惑。本文不是一蹴而就的,而是源于作者不断的思考和沉淀,力求通过简单的例子,来讲清楚这个知识点。
## 一个模型
为了接下来的举例说明,先构造 3 个类 `Food` 、 `Fruit` 、 `Apple` ,类之间的继承关系如下图所示:

## 正确理解 <? extends T> 与 <? super T>
对于 <? extends T> 与 <? super T> 一般解释为:
- <? extends T> 表示对象要么是 T 类型,要么是 T 的子类;
- <? super T> 表示对象要么是 T 类型,要么是 T 的父类。