一、什么是泛型
Jdk1.5版本后出现的新特性。用于解决安全问题,是一个安全机制
方法用<类型>声明
格式:通过<>来定义操作的引用类型
在使用java提供的对象时,什么时候写泛型呢?
通常情况下在集合框架很常见,只要见到<>就是要定义泛型
其实<> 就是用来接收类型的,当使用集合时将集合中要存储的数据类型作为参数传递到<> 中即可
好处:
1、将运行时期出现的问题,从运行时期转移到了编译时期,将运行时期的问题减少
2、避免了强制转换
集合定义:ArrayList<类型> 对象名称 = new ArrayList()
迭代器定义Iterator it = a1.Iterator()
二、早期没有泛型
早起做法:通过object类提高程序扩展性,使用时需要强制转换
如定义一个工具类:
三、泛型类
泛型类定义方法:凡是需要类型的地方都用XX来代替
XX:泛型的名称
什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候,早起定义Object来完成扩展,现在定义泛型类来完成扩展
Class 名称<XX>
{
private XX 成员变量名;
public XX 成员方法名称(){
}
}
四、泛型方法
泛型方法
泛型类定义的泛型,在整个方法中有效,如果被方法使用,那么泛型类的对象要操作的具体类型后,所有要操作的类型就固定了
为了让不同的方法操作不同类型,而且类型还不确定,那么就可以将泛型定义在方法上
泛型方法:public 返回类型 方法名(XX 参数,XX参数){}
类型定义在方法上,参数名称已明确,就可以使用
注:静态方法不可以访问类上定义的泛型
如果静态方法定义的类型不确定,可以将泛型定义在方法上
泛型定义在接口上
interface 接口名<>{}
五、泛型限定
当不确定接收何种泛型时,可以用一个通配符<?>来表示任意类型
如果只想打印一个类型或者它类型的子类这是可以用泛型限定
泛型限定: