Lower bound super of generics in JAVA

**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{

}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325860527&siteId=291194637