这例子可以区分super和extends这2个关键字的区别
super:<? super Father> 指的是Father是上限,传进来的对象必须是Father,或者是Father的父类,因此 new A<If<Child>>()会报错,因为Child是Father的子类
extends:<? extends Father> 指的是Father是下限,传进来的对象必须是Father,或者是Father的子类,因此 new C<If<GrandFather>>()会报错,因为GrandFather是Father的父类
<Father> 指的是只能是Father,所以new B<If<Child>>()和 new B<If<GrandFather>>()都报错