//关于泛型
//目前为止遇到的泛型都是和集合放在一起,以及出现在泛型方法里.
//在集合中,起到了一个对于输入对象的类别限制(注,集合的泛型可以不止一个)
//========================================================
//1,如果在创建集合的时候刻意忽略了泛型,那么泛型类型就会默认成为Object
//-------------------------------------------------
//2,在自定义泛型中
//这里自定义一个泛型类,如果在a后面加上一个钻石运算符<>,这个类就变成了一个泛型类
//这个泛型类如果没有指明泛型是什么,就需要在实例化的时候指明
//如果在实例化的时候忽略了泛型(比如ArraysList a=new .....)那么就会默认泛型是Object
class a<E>{
void run(E e){
System.out.println(e);
}
}
//关于泛型类的继承
//如果父类没有指明,则需要让子类也"不注明"=====class b<E> extends a<E>{ }
//相反如果父类指明了,那么子类就会自动继承这个泛型,自动变成泛型类====class b<E> extends a<Integer>{}
//3.关于泛型方法
//泛型方法的定义就是,方法中使用的泛型参数,和该类的参数无关,甚至和该类是不是泛型类也无关
//这样的效果就是你可以往这个方法里传入任意类型的数据,相当于一个白板
class s<E>{
//这个并不算是泛型方法
void run(E e){
}
//前面加上这个钻石运算符号才是泛型方法
<T> void b(T t){
System.out.println(t);
}
}
/*
几个注意事项
1.一个泛型类可以有多个泛型
2.泛型不同的集合之间没有继承关系,也不能相互指向
(但是对应继承的数组却可以)
3.待定补充
总结,泛型起到的作用
1.在编译阶段限制输入类型
2.在例如泛型方法中,可以自由确定输入对象的类型
*/
|