A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

extends E: 可以接收E类型或者E的子类型。上限。
super E: 可以接收E类型或者E的父类型。下限
问题:
public static void print(ArrayList<? extends Person> al),
<? extends Person>也不算是定义了具体的类型,那么为什么它不用强转就可以编译和运行了呢?

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

2 个回复

倒序浏览
? extends E: 可以接收E类型或者E的子类型。上限。
? super E: 可以接收E类型或者E的父类型。下限
上面你自己不是写的很清楚了吗,E只是相当于参数类型,并不是具体的对象什么的,你用T代替也行啊,<? extends Person>代表的意思是类型是Person或者Person的子类对象
回复 使用道具 举报 1 0
?是通配符,<?extends Person>表示接收Person及Person的子类属于上限,大致的意思是,你要想使用这个方法你必须要听从我的安排,必须传Person及Person的子类,传进来的使用的类型不用说肯定是Person类型(引用父类型)所以不用强转
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马