1、 泛型的定义
(1)将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性。这就是泛型。泛型的本质就是参数化类型。
(2)泛型的定义语法格式如下:
类1或者接口<类型实参> 对象 = new 类2<类型实参>();
注意:
-->“类2”可以是“类1”本身,可以是“类1”的子类,还可以是接口的实现类。
-->“类2”的类型实参必须和“类1”中的类型实参相同。
(3)例如:ArrayList<String> list = new ArrayList<String>();
上述代码表示创建一个ArrayList集合,当规定该集合中存储的元素类型必须为String类型。
2、 泛型在集合中的应用
(1)JDK1.5中已经改写了集合框架中的所有接口和类,增加了对泛型的支持,也就是泛型集合。
(2)使用泛型集合在创建集合对象时指定集合中元素的类型,从集合中取出元素时无需进行强制类型转换,并且如果把非指定类型对象放入到集合中,会出现编译错误。
(3)泛型使集合的使用更方便,也提升了安全:
-->存储数据时进行严格类型检查,确保只有合适类型的对象才能存储在集合中。
-->从集合中检索对象时,减少了强制类型转换。
(4)泛型的本质就是参数化类型,参数化类型的重要性在于允许创建一些类、接口和方法,其操作的数据类型被定义为参数,可以在真正使用时指定具体的类型。
参数化类型:参数化类型包含一个类或者接口,以及实际的类型参数列表。
类型变量:是一种非限定性标识符,用来指定接口或者方法的类型。
3、 定义泛型类、泛型接口和泛型方法
(1)定义泛型接口或类的过程,与定义一个接口或者类相似。
泛型类
概念:泛型类简单地说就是具有一个或者多个类型参数的类。
语法:
访问修饰符 class className<TypeList>
泛型接口
概念:泛型接口就是拥有一个或者多个类型参数的接口。泛型接口的定义方式与定义泛型类类似。
语法:
访问修饰符 interface interfaceName<TypeList>
TypeList表示由逗号分隔的一个或多个类型参数列表。
泛型方法
泛型方法实际上就是带有类型参数的方法。
语法:
访问修饰符 <类型参数> 返回值 方法名(类型参数列表)
注意:
类型变量放置在访问修饰符与返回值之间。
举例:
public <String> void showName(String s){}