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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李柯 中级黑马   /  2012-4-14 14:43  /  1390 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java泛型中<?>、<T>和<E>的含义,具体有什么区别?

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

5 个回复

倒序浏览
其实<> 就是用来接收类型的。里面的值<什么字母都行但是一致>
当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。

? 通配符。也可以理解为占位符。而且是接受任意,有时候?并不好用,如果限定一下子父类更好
泛型的限定;
? extends E: 可以接收E类型或者E的子类型。上限。
? super E: 可以接收E类型或者E的父类型。下限


静态方法不可以访问类上定义的泛型。
如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。

最后api上<>的都是要定义泛型

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
? 表示不确定的java类型,类型是未知的。 T  表示java类型。 E 代表Element,特性是枚举。还有K V,K V 分别代表java键值中的Key Value。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
1、<?>接受的是也就是任意类、<T>接受的是指定的类型、E 代表Element,接受的是枚举类型。
注意:
1、如果只指定了<?>,而没有extends,则默认是允许Object及其下的任何Java类了。也就是任意类。
2、通配符泛型不单可以向下限制,如<? extends Collection>,还可以向上限制,如<? super Double>,表示类型只能接受Double及其上层父类类型,如Number、Object类型的实例。   3、泛型类定义可以有多个泛型参数,中间用逗号隔开,还可以定义泛型接口,泛型方法。这些都泛型类中泛型的使用规则类似。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
使用<T>来声明类型持有者名称,自定义泛型类时,类持有者名称可以使用T(Type),如果是容器的元素可以使用E(Element),若键值匹配可以用K(Key)和V(Value)等,若是<?>,则是默认是允许Object及其下的子类,也就是java的所有对象了。
E ---Element (在集合中使用,因为集合中存放的是元素)   
K --- Key(键)   
N --- Number(数值类型)   
T --- Type(Java 类)   
V - Value(值)   
回复 使用道具 举报
? 表示不确定的java类型。
T  表示java类型。
K V 分别代表java键值中的Key Value。
E 代表Element。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马