1.泛型的概念
泛型是一种未知的数据类型,当我们不清楚使用什么数据类型时候可以使用泛型
E代表未知的数据类型
创建集合对象的时候就能确定泛型额数据类型
比如 ArrayList
2.使用泛型的好处
使用泛型的好处: 1.避免了类型转换的麻烦,存储的是什么类型,取出的就是什么类型不用转换了 2.把运行期异常(代码运行之后才抛出的异常)提升到了编译期 泛型弊端:泛型是什么类型,只能存储说明类型的数据
创建集合对象不使用泛型 好处:集合不使用泛型 默认类型是Object类型,可以存储任意类型的数据 弊端 不安全会引发异常
3.定义和使用含有泛型的类
<> 里面就是泛型
定义泛型的类
比较1.2不同 注意这里的GenericClass不是一定的这个名字
1
2
注意看划线位置
用这种方法 类中泛型为E 这样之后创建对象是什么类型 泛型就是什么类型更加方便使用了
4.定义和使用含有泛型的方法
定义含有泛型的方法:泛型定义在方法的修饰符和返回值类型之间 <>这里面就是泛型
格式:
修饰符<泛型> 返回值类型 方法名(参数列表(使用泛型)){
方法体;
类
psvm
5.定义和使用含有泛型的接口
接口类注意:要创建对象要先创建实现类 所以没有构造方法、
方法1
接口类
实现类
psvm
方法2
接口类
实现类
psvm
6.泛型通配符 >
之前的是先定义后使用这里可以直接使用
泛型的通配符: 不知道使用什么类型来接受的时候,刺激可以使用? ?表示未知的通配符
注意此时接收数据做参数传递但是不能往集合中存储数据
泛型的通配符: ?:代表任意的数据类型 使用方式: 不能创建对象使用,只能作为方法的参数使用
7.泛型通配符 > 高级应用 -受限泛型 会看就行
泛型的上限限定: ? extends E 代表使用的泛型只能是E类型的子类或本身 这里相当于继承嘛 ?是子类 E是父类 泛型的下限限定: ? super E 代表使用的泛型只能是E类型的父类或本身 这里相当于继承嘛 E是子类 ?是父类



