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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 王亚运 于 2012-10-21 20:17 编辑

如题,看到day15  
泛型讲的,不是很懂,
想到了多态。现在一片糊涂。。
哪位,能用通俗讲法讲解一下?
谢谢


评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

2 个回复

正序浏览
张忠豹 发表于 2012-10-21 18:40
本人笔记:(源自张孝祥老师的java基础加强)
泛型:就像是一件外衣,最主要的作用还是在编译阶段。当编译 ...

:handshake
受教了。。。
笔记很好
谢谢
回复 使用道具 举报
本人笔记:(源自张孝祥老师的java基础加强)
泛型:就像是一件外衣,最主要的作用还是在编译阶段。当编译完成,这件外衣被脱掉了,运行的时候,也就是咱们硬盘上的.class文件被加载至内存,与泛型没有任何关系。
1、jdk1.5以前,泛型没出现前,容易出现的问题
ArrayList list= new ArrayList(); list.add(1);list.add(1L);list.add(“name”)
int I = (Integet)list.get(1)//在编译时候强制类型转换且运行时出错
2、jdk1.5的集合类希望在定义集合是,明确表示你要向集合中装哪种类型的数据,无法加入指定类型以外的数据
ArrayList list<Integer>= new ArrayList<Integer> (); list.add(1);list.add(1L);//编译时会出错         int i = list.get(0);//不需要类型转换
总结1、2知道:
没有使用泛型时,只要是对象,不管是什么类型的对象,都可以存储到同一个集合中。使用泛型集合,可以将一个集合中的元素限定为一个特定类型,集合中只能存储同一个类型的对象,这样更安全;并且当从集合中获取一个对象时,编译器也可以知道这个对象的类型,不需要对对象进行强制类型转换,这样更方便。
        3、泛型的作用
泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合时会去除掉“类型”信息,使程序运行效率不受影响,对于参数化的泛型类型,getClass( )方法的返回值和原始类型完全一样。由于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器,就可以往某个泛型集合中加入其它类型的数据,例如,用反射得到集合,再调用add方法即可。
泛型是给编译器看的!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马