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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张稳 中级黑马   /  2014-4-23 23:55  /  1169 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

泛型中T和?的区别是什么,自认为T可以代替?

评分

参与人数 1黑马币 +1 收起 理由
Silent_memory + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
使用<T>来声明类型持有者名称,自定义泛型类时,类持有者名称可以使用T(Type),如果是容器的元素可以使用E(Element),若键值匹配可以用K(Key)和V(Value)等,若是<?>,则是默认是允许Object及其下的子类,也就是java的所有对象了。
回复 使用道具 举报
对于第一种<T> : 只能明确指定使用这一种类型,而且类型一旦确定以后就不能改变,若使用了其他类型是会报错的。
对于第二种<?> : 其适用范围会比较广,如果是指定了一种类型,他不仅可以使用该类,而且可以使用与该类相关的其他类,
比如(1)<?extends X>:我们可以接受X类型以及X类型的子类型,这种我们称之为上限!通常才储存时,我们选择上限,自己慢慢体会!
(2)<?superX>:我们可以接受X类型以及X类型的父类型,我们称之为下限,在取出元素是我们选择下限。

评分

参与人数 2技术分 +1 黑马币 +3 收起 理由
素质 + 3 神马都是浮云
Silent_memory + 1 很给力!

查看全部评分

回复 使用道具 举报 1 0
好久都没有这么笑了~
回复 使用道具 举报
?是通配符,T是在自定义的时候使用,就是说当你不知道传入的参数是什么类型的时候,就可以写T,当然,目前就你所学的知识是用不到T的吧!只能用到通配符
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马