class Inner{
public void test(){
List<Sun> sunList=new ArrayList<>();
List<Fruit> fruitList=new ArrayList<>();
List<Apple> applesList=new ArrayList<>();
// test1(sunList); 不允许这么做!
test1(fruitList);
test1(applesList);
test2(sunList);
test2(fruitList);
// test2(applesList); 不允许这么做
}
/**
* 生产者 能取不能存; 因为没有下限!
*
* @param list
*/
public void test1(List<? extends Fruit> list){
Fruit fruit = list.get(0);
}
/**
* 能存,因为有上限,但是存入的必须是T的子类; 上限就是T
* 算是能取,但是object. 因为队列的上限是没有的!
* @param list
*/
public void test2(List<? super Fruit> list){
// list.add(new Sun()); 不允许
list.add(new Fruit());
list.add(new Apple());
list.add(new RedRicher());
Object object = list.get(0);
}
}
class Sun{
}
class Fruit extends Sun{
}
class Apple extends Fruit{
}
class RedRicher extends Apple{
}
网友评论