泛型机制:JDK1.5之后引入的一个新特性
泛型机制是一种把数据类型明确工作推迟到创建对象或调用方法时才去明确的一种机制
泛型的语法 <数据类型,数据类型> 数据类型只能写引用数据类型
泛型只在编译期间有效,在运行期就擦除了
泛型的好处1.把问题提前到了编译期
避免了向下转型
泛型定义的位置:可以定义在接口,类,方法上面
没有泛型,需要强制类型转换,转换的不对,还会抛出java.lang.ClassCastException
有了泛型,强制类型转换可以省去。这样也能避免强制类型转换而产生的异常。
泛型的使用格式
【定义泛型】通过“< >”定义要操作的引用数据类型。
{1}.只要是通过“< >”将自定义的标示符写入到其中,这个“< >”中的类型参数就被声明了,就可以在程序中使用了。
所以注意,< >实际上是定义泛型参数的一种标示。
{2}. 类型参数:写入到< >中的标示符称为类型参数。
【类型参数和普通类型的区别】
{1}. 普通类型通过import关键字进行导包之后,就可以直接定义这个普通类型的变量了
{2}. 泛型中的类型参数是通过< >进行定义的。
定义之后,就可以像普通类型一样被使用。可以定义这个类型参数的引用变量。
之所以要< >进行定义,就是类型参数无法通过import关键字进行导包
【注意】不可以是基本数据类型,泛型中只能定义引用数据类型
【注意】集合框架中,Comparator,Comparable和Iterator也都具有泛型。
因为这些都会取到集合中具体的元素,所以带有泛型。
何时定义泛型类
当一个类要操作的另一个引用数据类型不确定的时候,原来由父类或者Object类进行扩展的地方可以采用泛型进行改造。
想让一个方法使用类上定义的泛型,必须在调用这个方法的时候,明确这个方法中类的泛型参数取值到底是什么!!!