**package Class;
import java.util.ArrayList;
import java.util.List;
/*
* super: lower bound of generic subclasses
*/
public class SuperTest {
public static void main(String[] args) {
List<Apple> list=new ArrayList<Apple>();
Text(list);
List<Fruit> list1=new ArrayList<Fruit>();
Text(list1);
List<Object> list2=new ArrayList<Object>();
Text(list2);
//规则:必定为Apple的父类,Apple为下限,(向上兼容)
List<? super Apple> list3=new ArrayList<Apple>();
Text(list3);
List<? super Fruit> list4=new ArrayList<Object>();
Text(list4);
List<? super Object> list5=new ArrayList<Object>();
Text(list5);
}
//super:Apple为下限
static void Text(List<? super Apple> list) {
//可以添加数据,但不能添加父类(super)
list.add(new Apple());
list.add(new fujiApple());
}
}**
package Class;
/*
* inheritance chain
* object
* |
* Fruit
* / \
* Apple Pear
* |
*fujiApple
*/
public class Fruit {
}
class Apple extends Fruit{
}
class Pear extends Fruit{
}
class fujiApple extends Apple{
}