文档章节

JAVA基础----java中E,T,?的区别?

文文1
 文文1
发布于 2015/10/19 10:57
字数 425
阅读 786
收藏 9

遇到<A>,<B>,<K,V>等,是用到了java中的泛型。 

一般使用<T>来声明类型持有者名称,自定义泛型类时,类持有者名称可以使用T(Type) 

如果是容器的元素可以使用E(Element),若键值匹配可以用K(Key)和V(Value)等, 

若是<?>,则是默认是允许Object及其下的子类,也就是java的所有对象了。 

所以说,如果是字每A,B,C,D...定义的,就是泛型,这里T只是名字上的意义而已T---type,E----Element 

K----key, V----value 

如果是?定义的,就是普通的Object或者其子类 

举例说明: 

Set<T> 表示 集合里 是   T类的实例 

List<E> 表示  集合里 是  E类的实例 

List<?> 表示 集合里的对象类型不确定,未指定 

List 同 List<?> 是一样的。 


泛型的作用: (避免类型强转)

1、用泛型:

List<T> list=new ArrayList<T>();
T t=list.get(0);

2、不用泛型: 

List  list=new ArrayList();
T t=(T)list.get(0);


总结: 

a、用泛型只是确定了集合内的元素的类型,但却是在编译时确定了元素的类型再取出来时已经不再需要强转, 

增强程序可读性,稳定性和效率 

b、不用泛型时,如果是装入集合操作,那么元素都被当做Object对待,失去自己的类型,那么从集合中取出来时, 

往往需要转型,效率低,容易产生错误 

说穿了,其实A、B、E、T等都是一会事情,只是便于人理解吧,对编译器毫无影响。

本文转载自:

共有 人打赏支持
文文1
粉丝 21
博文 363
码字总数 118735
作品 0
长沙
程序员
私信 提问
大数据开发培训:0基础学习Java编程语言有哪些知识点?

Java 技术通用、高效、具有平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网等,学习Java首先要知道学习知识点有哪些。在这就用加米谷大数据培训...

加米谷大数据
07/25
0
0
Groovy轻松入门——通过与Java的比较,迅速掌握Groovy

Groovy和Java的相同点有: 3+, 4+, 6+, 8+, 10+, 12+, 13, 14, 15, 18+, 20+, 21, 22, 23, 28+, 29+, 30+, 31+, 32+ +表示Groovy不但涵盖了Java的语法,而且还有增强部分。 Groovy和Java的不...

DavidBao
2015/05/15
0
0
JDK, JRE与JVM的区别与联系

很多朋友可能跟我一样,已经使用JAVA开发很久了,可是对JDK,JRE,JVM这三者的联系与区别,一直都是模模糊糊的。 今天特写此文,来整理下三者的关系。 JDK : Java Development ToolKit(Java开发...

穿石小水滴
08/15
0
0
java ThreadLocal(应用场景及使用方式及原理)

虽然ThreadLocal与并发问题相关,但是许多程序员仅仅将它作为一种用于“方便传参”的工具,胖哥认为这也许并不是ThreadLocal设计的目的,它本身是为线程安全和某些特定场景的问题而设计的。 ...

onedotdot
2017/10/18
0
0
Java面试:投行的15个多线程和并发面试题

本文由ImportNew -一杯哈希不加盐 翻译自dzone。欢迎加入翻译小组。转载请见文末要求。 多线程和并发问题已成为各种 Java 面试中必不可少的一部分。如果你准备参加投行的 Java 开发岗位面试,...

ImportNew
08/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

小白带你认识netty(三)之NioEventLoop的线程(或者reactor线程)启动(一)

在第一章中,我们看关于NioEventLoopGroup的初始化,我们知道了NioEventLoopGroup对象中有一组EventLoop数组,并且数组中的每个EventLoop对象都对应一个线程FastThreadLocalThread,那么这个...

天空小小
今天
2
0
PHP动态扩展Redis模块

查看已有模块 [root@test-a ~]# /usr/local/php/bin/php -m[PHP Modules]bz2Core...zlib[Zend Modules] 下载包,解压,生成configure文件 [root@test-a ~]# cd /usr/local/src/[ro......

野雪球
今天
2
0
在Ignite中使用线性回归算法

在本系列前面的文章中,简单介绍了一下Ignite的机器学习网格,下面会趁热打铁,结合一些示例,深入介绍Ignite支持的一些机器学习算法。 如果要找合适的数据集,会发现可用的有很多,但是对于...

李玉珏
今天
3
0
Mybatis应用学习——简单使用示例

1. 传统JDBC程序中存在的问题 1. 一个简单的JDBC程序示例: public class JDBCDemo {public static void main(String[] args) {Connection con=null;PreparedStatement statemen...

江左煤郎
今天
4
0
使用JavaScript编写iOS应用业务逻辑

JSAUIKitCocoa使你可以使用JavaScript编写对性能要求不高但可能变动性很大的iOS应用的业务逻辑部分,View组件、需要多线程支持的Model等则直接使用原生对象。 编写方式与React Native相似,但...

neal01
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部