黑马程序员技术交流社区

标题: 泛型有什么作用? [打印本页]

作者: bitwdh    时间: 2016-6-24 15:58
标题: 泛型有什么作用?
泛型有什么作用和使用时应注意些什么???
作者: syinys7    时间: 2016-6-24 17:14
定义:泛型是限制集合存储的数据类型

首先要区分集合和数组的区别: 集合可以存储任意引用数据类型(对象),而且长度不是固定的.
                                         数组虽然说可以存储基本类型和引用类型,然而长度有限,是固定的.

那么问题就出现了,既然说集合可以储存任意数据类型(什么都能存),凭什么系统会判定出集合元素是属于什么类型的呢.举个例子:
你的list集合中元素分别是"1","new Student("张三",23)" 一个数字和一个对象,在调用Student对象方法的时候,new Student可以调用,但是"1"并不是Student的对象,怎么调用方法,这里就会报出错误:ClassCastException(类转换异常)

然而规定了泛型以后,List<Student>,系统就得知,你的这个集合的元素,全部都是Student的对象,就不会发生以上的错误,提高了安全性

第二点也是,省去了从Object类的对象强行转换成Student对象这一步,简化了代码,提高复用性


泛型是集合的标签.. 简单记忆就是,一个罐子上面贴的标签是<盐>,那么你就会知道这个罐子里装的是盐咯
作者: syinys7    时间: 2016-6-24 17:18
泛型的使用注意事项:

1.<> 尖括号内容里一定是引用数据类型 ,如果你想存数字,请将它定义为Integer, 这里会系统自动封装数字为Integer类型

2.前后泛型必须要一致,或者后面干脆不写内容.  ArrayList<String> list=new ArrayList<>();
                                                               ArrayList<String> list=new ArrayList<Integer>();这种就是错误的.相当于说你放盐的罐子,里面又要放糖..弄得别人根本分不清你这罐子里究竟是个啥

希望能帮到你
作者: bitwdh    时间: 2016-6-24 18:49
syinys7 发表于 2016-6-24 17:14
定义:泛型是限制集合存储的数据类型

首先要区分集合和数组的区别: 集合可以存储任意引用数据类型(对象),而 ...

谢谢你!!!!!
作者: bitwdh    时间: 2016-6-24 18:51
syinys7 发表于 2016-6-24 17:14
定义:泛型是限制集合存储的数据类型

首先要区分集合和数组的区别: 集合可以存储任意引用数据类型(对象),而 ...

谢谢你!!!!!
作者: 1316582449    时间: 2016-6-24 19:47

泛型的作用就是提高代码的重用性,你肯定知道函数重载吧,但是重载的话还是太烦,要累赘的写这么多的重复代码,泛型就是就是避免强制类型转换,减少装箱拆箱提高性能,减少错误
作者: 15820030540    时间: 2016-6-24 21:48
定义集合中存储的元素的数据类型,就是我理解的泛型的作用;应该注意的是,使用泛型时要注意前后泛型一致,其他的就没了吧。
作者: sgnx    时间: 2016-6-24 21:56
泛型的出现增加了安全性,将运行时期的异常转到编译时期
作者: 弓长VV    时间: 2016-6-24 22:45
1,减少拆装箱的麻烦
2,将运行期的错误转移到编译期
2,扫黄(还是这个功能最令人振奋)
作者: bitwdh    时间: 2016-6-30 11:01
弓长VV 发表于 2016-6-24 22:45
1,减少拆装箱的麻烦
2,将运行期的错误转移到编译期
2,扫黄(还是这个功能最令人振奋) ...

明白了,谢谢你!!!
作者: bitwdh    时间: 2016-6-30 11:14
1316582449 发表于 2016-6-24 19:47
泛型的作用就是提高代码的重用性,你肯定知道函数重载吧,但是重载的话还是太烦,要累赘的写这么多的重复 ...

谢谢你的回复和解答!!
作者: bitwdh    时间: 2016-6-30 11:30
15820030540 发表于 2016-6-24 21:48
定义集合中存储的元素的数据类型,就是我理解的泛型的作用;应该注意的是,使用泛型时要注意前后泛型一致, ...

明白了,谢谢你的热心解答!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2