泛型:任意的类型。是一种把明确数据类型的工作放在了创建对象或者调用方法时候进行的特殊的类型,一般只应用在集合里。
泛型的格式:<数据类型>,举例如下:
为什么有泛型:我们知道,数组只能存储一种数据类型;集合可以存储任意类型的对象,但是我只想让我的存储一种类型,不想让其他类型存进去,怎么解决呢?
这时候就要用泛型了,泛型就是模仿数组限定存入数据类型而来的,在定义集合的时候,告诉集合,限定集合只能存储什么类型的元素(如果不明确指定则默认是object类型)。以上面泛型举例,arraylist<string> array = new arraylist<string>();就是限定集合array只能存入string类型数据。
泛型的好处:
(1)解决了虚拟机黄色警告问题,因为如果不加泛型的话,虚拟机会认为存在因操作失误存入非正常数据的可能,而报出黄色警告。
(2)把运行期间的类型转换异常提前到了编译期间,定义泛型之后,如果存入非泛型规定类型数据,虚拟机会报错而导致编译不通过。
(3)优化程序设计,使得代码更清晰。
如果类或者接口后面有 < > ,那么这就是泛型的体现。它就是要你在使用的时候明确类型,这时候就可以使用泛型了。
泛型一般的用法有泛型类、泛型方法、泛型接口。
顾名思义,泛型类就是把泛型定义在类上。举例如下:
定义成这样,说明方法传递的参数必须和泛型类的类型一致,这时候,泛型类的使用方法如下:
从上边可以知道,我们用泛型类可以使得泛型类的方法传递不同类型的参数(上面分别传递了string和integer类型),但是我们需要在泛型类和其方法上都加上泛型。那么,我们能不能在调用方法的时候,才去明确类型呢?
这就用到了泛型方法,泛型方法就是把泛型加在方法上。举例如下:
使用的时候:
把泛型加在接口上。泛型接口有什么特点呢?
首先定义一个泛型接口:
定义类实现这个接口:
(1)在写实现类的时候,已经知道接口上应该是什么类型了,例如应该是string类型:
调用方式:
(2)在写实现类的时候,不知道接口上应该是什么类型:
小结:泛型属于新特性,是高新类技术,在很多方面多有用处。既可以规定必须用哪种类型,又可以代替方法重载,传递多种参数。