1)泛型的定义:将对象的类型作为参数,指定到其他类或者方法上,从而保证类型换的安全性和稳定性,这就是泛型。反省的本质就是参数化类型。
反型的定义语法:类1或者接口<类型实参>对象=new 类2<类型实参> 例如:
ArrayList<String>list = new ArrayList<String>();表示创建一个ArrayList集合,但规定该集合存储的元素类型必须为String类型
2)泛型在集合中的应用:
泛型集合在创建集合对象时指定集合中元素的类型,从集合中取出元素时无须进行类型强制转换,并且如果把非指定类型对象放入集合,会出现编译错误。
3)深入理解泛型:
反型的本质就是参数化类型,参数化类型的重要性在于允许创建一些类、接口和方法,其所操作的数据类型被指定为参数。
参数化类型:参数化类型包含一个类或者接口,以及实际的类型和参数列表
类型变量:是一种非限定性标识符,用来指定类、接口或者方法的类型。
4)定义泛型类、泛型接口和方法
a、泛型类:就有一个或者多个类型变量的类
定义泛型变量的语法:访问修饰符class className<TypeList>
在语法中:TypeList表示类型参数列表,每个类型变量之间以逗号隔开。
创建泛型类实例的语法:new className< TypeList >(argList)在语法中:
TypeList表示定义的类型参数列表,每个类型变量之间以逗号分隔。
argList表示实际传递的参数列表,每个类型变量之间同样以逗号隔开。
5)泛型接口:拥有一个或者多个类型变量的接口
定义泛型接口的语法:访问修饰符interface interfaceName<TypeList>
在语法中:TypeList表示有逗号隔开的一个或者多个类型参数列表。
例如:public interface TestInterface<T>{public T print(T t)}
泛型类实现泛型接口的语法:
访问修饰符 class className< TypeList > implements interfaceName< TypeList >
6)泛型方法:带有类型参数的方法。
注意:定义泛型方法与方法所在的类、或者接口是否是泛型类或者泛型接口没有直接的联系,也就是说无论是泛型类还是非泛型类,如果需要就可以定义泛型方法。
定义泛型方法的语法:访问修饰符<类型参数>返回值 方法名(类型参数列表)
例如:public <String> void showName(String s){ }在泛型方法中,类型变量 是放置在访问修饰符与返回值之间。
7)从泛型类派生子类
面向对象的特性同样适用于泛型类,所以泛型类也可以继承。不过,继承了泛型类的子类,必须也是泛型类
继承泛型类的语法:class 子类<T> extends 父类<T>{ }
|
|