泛型
泛型只在编译阶段起效,在类加载时会擦拭成为相应的类型。
用在类的泛型:
class User<T>{
T date;
T getDate(){
return date;
}
}
在使用时传入一个类型,类里面使用T修饰的会成为String类型。接口用法一样。
User<String> user = new User<>();
用在方法上的泛型:
T getDate(T t){
return t;
}
可以传入任何数组类型,并返回。
用在变量中:
T date;该变量是一个泛型变量,在使用时转化传入的类型转换。
User<Admin> user = new User<>();
传入的需要属于Admin类型
class User<T extends Admin>{
T date;
T getDate(T t){
return t;
}
}
class Admin extends User{
}
泛型的界限
上界限:
设置泛型对象的上限使用extends,表示参数类型只能是该类型或该类型的子类。
User<? extends Admin> user = new User<>();
下界限:
设置泛型对象的下限使用super,表示参数类型只能是该类型或该类型的父类。
User<? supers Admin> user = new User<>();