在这里我们需要想这几个方面
泛型的理解和好处
泛型的基本语法
自定义泛型
泛型的继承和通配符
1.泛型的理解和好处
我们先来看一下一个题目来引出泛型
还有传统试一下
public class study01 {
public static void main(String[] args) {
ArrayList<Object> arrayList = new ArrayList();
arrayList.add(new dog("xh",15));
arrayList.add(new dog("xs",16));
arrayList.add(new dog("xq",17));
//遍历
for (Object obj:arrayList){
dog dog =(dog)obj;
System.out.println(dog.getName()+ dog.getAge());
}
}
}
class dog{
private String name;
private int age;
public dog(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
这样非常简单,我们也已经轻车熟路了,但是如果一个程序员添加了一只猫
那该怎么办,这样就会出现隐患了吧,在我们向下转型的时候就会抛出异常
咱到时候还会向下转型,所以效率也会有问题
所以就引出了我们的泛型
这样咱们就会发现,他就不发添加cat类的了,这也就是泛型的第一个优点,保证了安全性,另外咱不是说他不是还得向下转型嘛
所以,他也不需要在转型了在增强for中我们就可以把object转换成Dog了
就像这样,这就是好处
2.介绍泛型
泛型字面意思就是广泛的类型
第四条就是这样理解
3.泛型的语法
其实上面什么字母都可以但是T比较常见
然后List有同学可能会问为什么,我们来打开源码看一下
一目了然
练习题
这是用HashSet
下面就是HaspMap
4注意事项
在之前我们提到的<T>,这个地方我们不是一般放数据类型或者类嘛
但是再放入数据类型的时候,我们一定要放入引用类型,而不是基本数据类型
就比如<Interage>而不是<int >
然后再放入类的时候,我们不仅可以放入一个类,也可以放入他的子类
还有就是如果我们没有写<>这个的时候,一般系统就会默认为object
5.自定义泛型
在我们之前 我们就已经讲过了,
就是这里
还有自定义泛型接口
自定义泛型方法