泛型(generic)
1.诞生的意义
2.泛型的使用语法
泛型有三种用途
1)泛型接口
2)泛型类
3)泛型方法
1.如何使用一个泛型类
2.自己去定义一个类
3.使用和定义泛型方法
4.泛型一些知识点
泛型为什么出现
顺序表本身是一种抽象数据类型,保存的数据不只是int型
如果没有泛型的支持,我们必须为每一种要保存的类型定义一个顺序表类
为了解决这个问题;
1)第一阶段: object是所有类的基类;多态:基态的引用可以指向任意子类的对象
引入的新问题:必须一直记着顺序表中的元素类型 否则出现运行时异常 -->泛型诞生
泛型出现的原因:
2.基类的引用可以指向
3.解决 无法在编译期间快速找出一些问题
前提:错误越早发现越好
1、写代码的时候 idea提示错误
2、编译期间 javac发现你错误
3、运行期间
为了让错误尽早在编译期间出现,引入泛型
1、泛型类:
class ArrayList<类型变量形参 Type variable Paramter>{
}
class ArrayList<E>{ 类型变量实参Type variable Argument
E[] array;
int size;
}
使用泛型类:
1.嵌套
ArrayList<String>p=..;
ArrayList<> q..; q的元素期望类型是ArrayList<String><ArrayList<ArrayList><String>>q;
Set<Map.Entry<String,String>>
2.类型推导 Type inferer
ArrayList<String>p=new ArrayList<>();
3.多类型参数
Map<String,Integer>成绩;
泛型是编译期间的魔法 (即他只在编译期间起作用,类的字节码中就没有泛型了 运行期间更没有)