【发布时间】:2016-07-19 12:24:28
【问题描述】:
这样分配的原因是什么?
List<? extends Fruit> flist = new ArrayList<Apple>();
// flist.add(new Apple());
// flist.add(new Fruit());
// flist.add(new Object());
一旦我们将 Apple 容器“向上转换”到 Fruit 容器中,我们就无法在其中添加任何内容。
我知道我们可以这样做:
List<Apple> basket = new ArrayList<Apple>();
//Fill the basket with tons of juicy apples
List<? extends Fruit> fruitContainer = basket;
然后我们可以使用 Fruit 接口 来使用 fruitContainer 持有的元素。但是,如果我们以后不能添加任何内容,那么这样做的实际理由是什么?
List<? extends Fruit> flist = new ArrayList<Apple>();
【问题讨论】:
标签: java generics variable-assignment covariance upcasting