泛型
<>
为什么用泛型:
1)防止出现强制类型转换错误
2)创建的时候,才知道用哪个类型,比较简洁动态
1.泛型类
/**
* @Author xueshuai
* @Date 2020/5/18 10:11
* @Description 泛型类
*/
public class FanXing<T> {}
2.泛型方法
//泛型方法,提前用<T> 来表述这是个泛型方法
public <T> void show(T obj){
System.out.println(obj);
}
3.接口实现类
3.1 确定参数类型的实现类
/**
* @Author xueshuai
* @Date 2020/5/18 11:30
* @Description 确定参数类型的实现类
*/
public class FanXingImp1 implements FanXingInterface<String> {
@Override
public void show(String obj) {
}
}
3.2 没有具体参数的泛型实现类
/**
* @Author xueshuai
* @Date 2020/5/18 11:31
* @Description 没有具体参数的泛型实现类
*/
public class FanXingImp2<T> implements FanXingInterface<T> {
@Override
public void show(T obj) {
}
}
3.3通配符
通配符设置上限
//参数类型是number及其子类
List<? extends Number>
通配符设置下限
//参数类型是 Type和Type的父类
List<? super Type>
4.应用场景
因为父类BaseDao不知道子类继承的类型,所以,给个泛型,在创建的时候用
public class BaseDao<T>{
void doSave(t t)
}
多个实现,就有其方法
public StudentDao extends BaseDao<Student>
public TeacherDao extends BaseDao<Teacher>