文章预览
来源:juejin.cn/post/7022581523048038408 准备工作 有如下类的 继承关系 ,为下文理解做好准备 没有泛型上下界遇到了什么问题? Apple是Fruit的子类 ,那么如下代码是不会出错的 // ok Fruit apple = new Apple(); 如果我们写如下代码,定义一个装有Fruit的List,并将装有Apple的List赋值给它,会如何呢? List plate = new ArrayList (); 它会在Idea里报红线,运行会报错: java: 不兼容的类型: java.util.ArrayList 无法转换为java.util.List ,显然在集合间不存在继承引用关系 那么面对以上问题,就需要上下界登场 泛型的上界, ? extends T 使用泛型的上界, ? extends Fruit ,就能解决如上问题 List extends Fruit> plate = new ArrayList (); 那么?我们该如何理解上界?? 是java的通配符,在如上的例子中,上界 ?extends Fruit 代表任何继承了Fruit的子类(包含Fruit本身),该集合中装的就是
………………………………