泛型概念
泛型即"参数化类型".一提到参数,我们首先就会想到在定义方法的时候会有形参,然后调用此方法传递实参
参数化类型:就是将类型由原来具体的类型参数化,类似于方法中的变量参数,此时的类型也定义成参数类型,然后再使用/调用时传入具体的类型
为什么使用泛型
在早期的Object类型可以接受任意的对象类型,但是在实际的使用过程中,会出现类型转换问题.因为存在这种隐患,所以java提供了泛型来解决这个安全问题
泛型类型
泛型类型分为:泛型类,泛型接口,泛型方法
泛型类
在定义类的时候将类型定义为泛型
public class A<T> {//T表示类型
private T number;//表示T类型的常量,T类型由外部决定
public T getNumber() {//泛型方法的返回值类型也是T
return number;
}
public void setNumber(T number) {
this.number = number;
}
}
从泛型类派生出子类
子类也要是泛型类,且与父类类型一致
当子类不是泛型类时,父类要明确泛型数据类型
泛型接口
泛型接口与泛型类使用基本相似,只是在定义的时候是接口,也可以用泛型来定义
泛型方法及泛型通配符
泛型通配符就是使用"?"代表具体的类型实参
public class A<T> {
private T number;
public void print(A<? extends Object> i){//使用extends表示他的上限是Object,可以使用它及它的子类
}
public void print2(A<? super Integer> in){//使用super表示他的下限是Integer,可以使用它及它的父类
}
}